在现代Linux服务器环境中,安装PHP 5.5版本已不再是常规操作,因为该版本已停止官方维护(EOL),为了维护老旧的遗留系统,通过源码编译安装是构建PHP 5.5运行环境最稳定、兼容性最好的解决方案,相比于直接使用包管理器安装旧版本,源码编译能让我们精确控制依赖库版本,避免与系统现有环境产生冲突,同时能够灵活开启或关闭特定扩展,确保业务代码在无需大规模重构的情况下平稳运行。

环境准备与依赖库安装
在开始编译之前,必须确保Linux系统具备完整的编译工具链和PHP运行所需的基础依赖库,这一步是编译成功的关键,缺失任何依赖都会导致编译中断,以CentOS 7为例,首先需要安装Development Tools工具包以及常用的库文件。
核心依赖包包括:gcc、gcc-c++、make、autoconf、libxml2-devel、openssl-devel、libcurl-devel、libjpeg-devel、libpng-devel、freetype-devel等,这些库分别对应PHP的XML解析、加密、网络请求、图像处理等核心功能,在安装过程中,建议优先使用yum groupinstall "Development Tools"来建立基础编译环境,随后逐一安装上述特定开发库,对于Ubuntu/Debian系统,则应使用apt-get install build-essential及对应的libxxx-dev包。
特别需要注意的是libmcrypt库,PHP 5.5时代广泛使用Mcrypt加密扩展,但现代Linux发行版往往已将其移除,如果业务代码依赖Mcrypt,必须手动下载libmcrypt源码进行编译安装,并在编译PHP时指定其路径,否则会导致运行时报错。
下载PHP源码与编译配置
获取PHP 5.5源码建议前往PHP官方归档站点或可信的镜像站,下载php-5.5.x.tar.gz压缩包,下载完成后,执行解压命令并进入源码目录。
编译配置是整个安装过程的核心环节,通过./configure命令定制PHP的功能模块,为了满足现代Web应用的需求,推荐使用以下配置参数进行构建:
./configure \ --prefix=/usr/local/php55 \ --enable-fpm \ --with-fpm-user=www \ --with-fpm-group=www \ --enable-mysqlnd \ --with-mysqli=mysqlnd \ --with-pdo-mysql=mysqlnd \ --with-openssl \ --with-zlib \ --with-curl \ --with-gd \ --with-jpeg-dir \ --with-png-dir \ --with-freetype-dir \ --enable-mbstring \ --with-mcrypt \ --enable-sockets \ --enable-soap \
参数解读与专业建议:

--prefix=/usr/local/php55:将PHP安装到独立目录,避免覆盖系统自带的PHP版本,实现多版本共存。--enable-fpm:PHP 5.5时代PHP-FPM已成为标准配置,必须开启以获得更好的进程管理性能。--with-mysqlnd:使用MySQL Native Driver驱动,这是PHP 5.3之后推荐的驱动,性能优于旧版libmysql。--with-mcrypt:针对遗留系统的关键参数,确保旧代码中的加密函数可用。
执行配置命令后,系统会检查环境,若报错提示缺少某个库,需根据错误信息安装对应的devel包,直至配置成功生成Makefile文件。
编译安装与初始化配置
配置成功后,执行make命令进行编译,根据服务器性能,这一过程可能需要几分钟到十几分钟。为了确保代码无误,建议在执行安装前先运行make test,尽管这会耗费额外时间,但能提前发现潜在的兼容性问题,测试通过后,执行make install将文件安装到指定目录。
安装完成后,需要进行初始化配置。源码包提供了两个生产环境配置模板:php.ini-development和php.ini-production,出于安全考虑,必须选择后者,执行cp php.ini-production /usr/local/php55/lib/php.ini将其复制到配置目录。
随后配置PHP-FPM,进入/usr/local/php55/etc目录,复制php-fpm.conf.default为php-fpm.conf。编辑该文件,重点监听端口和进程管理设置,默认情况下,PHP-FPM监听127.0.0.1:9000,如果Nginx与PHP在同一台服务器,保持默认即可;若需远程调用,可修改为监听特定IP或使用Unix Socket以提高通信效率,在进程管理部分(pm),根据服务器内存大小调整pm.max_children,防止内存溢出导致服务器宕机。
系统集成与安全加固
为了让系统能识别PHP命令,需要将PHP的可执行路径加入环境变量,编辑/etc/profile文件,追加export PATH=/usr/local/php55/bin:$PATH,执行source /etc/profile使其生效,此时输入php -v应能看到PHP 5.5的版本信息。
安全加固是E-E-A-T原则中“可信”的重要体现,由于PHP 5.5存在已知的安全漏洞,必须在php.ini中关闭危险函数,找到disable_functions项,设置为disable_functions = exec,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source,这能有效防止Webshell通过PHP函数执行系统命令,确保expose_php = Off,隐藏PHP版本号,减少被扫描攻击的风险。

配置Web服务器(如Nginx)以支持PHP,在Nginx配置文件的location ~ \.php$块中,正确设置SCRIPT_FILENAME路径,并将请求传递给PHP-FPM监听的地址或Socket,重载Nginx配置并启动PHP-FPM服务(/usr/local/php55/sbin/php-fpm),至此,PHP 5.5环境搭建完成。
相关问答
Q1:在编译PHP 5.5时提示“Don’t know how to define struct flock”错误怎么办?
A: 这是一个典型的系统头文件兼容性问题,通常是因为/usr/include/php/ext/standard/flock_compat.h文件中定义的flock结构与系统库冲突,解决方法是在编译前修改该源码文件,注释掉其中关于struct flock的定义部分,让PHP直接使用系统自带的定义,保存后重新执行make即可解决。
Q2:PHP 5.5无法连接MySQL数据库,提示“Can’t connect to MySQL server on…”?
A: 首先确认编译时使用了--with-mysqlnd驱动,如果编译正确,问题通常出在php.ini配置上,检查mysqli.default_socket的路径是否与MySQL实际运行的socket文件路径一致(通常位于/var/lib/mysql/mysql.sock或/tmp/mysql.sock),如果路径不一致,在php.ini中修正该路径或创建软链接指向正确位置即可。
希望这篇详细的安装指南能帮助您顺利完成环境部署,如果您在安装过程中遇到其他报错,欢迎在评论区留言,我们将为您提供具体的排查思路。

















