在Linux服务器上通过源码编译安装PHP5.5.9,是很多运维人员和开发者在面对旧项目兼容性问题时的常见操作。虽然现在PHP版本已经更新到8.x,但不少遗留系统仍然依赖5.5.x版本,尤其是CentOS 6或7这类老系统上。源码编译安装虽然步骤多,但胜在灵活可控,可以根据需要定制模块、调整参数。下面我就结合实际操作经验,把整个流程拆开来讲清楚。
编译前需要准备哪些依赖包
开始编译之前,第一件事就是先把依赖环境搞定。PHP编译过程中涉及到大量底层库,比如gd、curl、libxml、openssl、mysql等,如果系统里缺少对应的开发包,编译过程就会报错中断。
拿我自己的经验来说linux php559 源码编译安装,最常用的命令是yum安装这些基础依赖:yum install -y gcc gcc-c++ make automake libtool libxml2-devel openssl-devel curl-devel libjpeg-devel libpng-devel freetype-devel。如果有mysql的扩展需求,还得装mysql-devel或者mariadb-devel。这一步千万别偷懒,少一个包后面就得回头补装,重新configure和make。
另外,PHP5.5.9对某些库的版本兼容性有点挑剔,比如libcurl版本太低或太高都可能导致编译失败。建议在运行configure之前,先确认一下系统版本和库版本是否匹配。如果是在CentOS 6上,最好先更新一下yum源,比如用epel源装新版libcurl。
下载源码包和解压配置流程
源码包从哪里拿?官方下载地址是,找到php-5.5.9.tar.gz这个文件。我习惯用wget直接下载到服务器上,比如wget ,然后tar -zxvf php-5.5.9.tar.gz解压。

解压完后进入目录cd php-5.5.9,接下来就是configure这一步。这一步是定制化编译的核心,参数怎么写决定了你编译出来的PHP支持哪些功能。举个例子,一个典型的配置命令长这样:
./configure --prefix=/usr/local/php559
with-config-file-path=/usr/local/php559/etc
enable-fpm
with-mysqli
with-pdo-mysql
with-gd
with-curl
with-openssl
with-zlib
with-jpeg-dir
with-png-dir
with-freetype-dir
enable-mbstring
enable-sockets
enable-soap
这里--prefix指定安装目录,--enable-fpm是打开php-fpm支持,因为5.5.9本身内置了fpm,不用额外打补丁。如果你需要其他扩展比如--with-mcrypt,也可以加上,前提是系统里装了libmcrypt-devel。
configure这一步比较耗时,需要耐心等它跑完。如果中途报错,就看报错信息里缺什么包,补装后重新configure即可。千万注意,有些错误信息里提示的包名可能和实际包名不一样,比如libxml2-devel写成libxml2-dev,这种小差异容易让人迷惑。

编译安装和常见错误处理
configure成功后,下一步就是make。这个命令会把源码编译成二进制文件,时间长短看服务器性能linux内核,一般几分钟到十几分钟不等。我遇到过的最常见错误是内存不足导致编译中断,这时候可以尝试关闭一些不必要的服务,或者增加swap空间。
make结束后linux php559 源码编译安装,执行make install把编译好的文件安装到指定目录。如果前面所有步骤都顺利,这一步基本不会出问题。安装完后,检查一下/usr/local/php559/bin/php -v,看到PHP 5.5.9的版本信息,说明编译成功了。
还有一个容易被忽略的地方:编译成功后,需要把源码目录里的配置文件复制过去。比如cp php.ini-production /usr/local/php559/etc/php.ini,然后根据需求修改php.ini里的参数,像max_execution_time、memory_limit这些。如果是用php-fpm,还得复制和修改php-fpm.conf和www.conf。

有时候make过程会卡在某个扩展上,比如gd或openssl报错。这时候可以回看configure命令,尝试去掉有问题的扩展参数,或者检查对应的开发包版本是否正确。我试过一次gd扩展编译失败,后来发现是freetype版本太老,升级后就好了。
配置php-fpm和验证服务是否正常运行
php-fpm是PHP5.5.9最常用的运行模式,尤其是配合nginx使用。编译安装完成后,需要手动配置fpm的启动脚本。在源码目录的sapi/fpm文件夹下,有一个init.d.php-fpm文件,可以把它复制到/etc/init.d/里,加上执行权限,然后就能用service php-fpm start来启动了。
但要注意,这个脚本可能需要根据实际安装路径做调整,比如php_fpm_BIN路径要改成/usr/local/php559/sbin/php-fpm。更简单的方式是直接用/usr/local/php559/sbin/php-fpm命令启动,加上--nodaemonize参数可以前台运行看日志。
验证fpm是否启动成功,可以看进程列表ps aux | grep php-fpmlinux移植,看到有master和worker进程就说明正常。另外,检查一下监听端口或者socket文件,默认是监听127.0.0.1:9000,也可以在www.conf里改成socket模式。
写一个简单的php测试文件,比如/usr/local/nginx/html/info.php,内容填<?php phpinfo(); ?>,然后用浏览器访问,看到phpinfo页面输出,说明整个编译安装流程走通了。
从依赖准备到编译安装,再到fpm配置,每一步虽然琐碎,但只要按照顺序来,遇到报错冷静分析,基本上都能搞定。这套流程不仅适用于PHP5.5.9,其他5.x版本也大同小异,关键是学会看configure的help信息和日志报错。实际项目中,编译安装比包管理器安装更能掌控细节,尤其在生产环境里,这个技能相当实用。
