php5下载安装
PHP 5 的载安装安装包早就不在官方渠道提供下载了。你要是载安装非装不可,得去博物馆一样的载安装存档站翻。我上周刚在一台老旧的载安装 CentOS 6 机器上折腾过这事,过程比想象中麻烦,载安装但也没那么玄乎。载安装
先明确一点,载安装PHP 5.6 是载安装最后一个 5.x 版本,也是载安装官方安全支持结束于 2018 年底的那个。你现在下载它,载安装纯粹是载安装为了跑老项目,或者像我一样,载安装被迫维护一台不能升级的载安装服务器。别指望任何现代依赖库能跟它愉快相处。载安装
下载环节,载安装别去 php.net 主站,那边早把 5.x 的链接藏到历史版本区了。直接访问 museum.php.net,这个站点是 PHP 官方维护的旧版归档。找到 php-5.6.40.tar.gz,这是最后的发行版。文件大概 13MB,下载速度看网络心情。如果你需要更老的 5.2 或 5.3,这站也有,但那些年代的代码放到今天编译,报错能让你怀疑人生。
拿到压缩包后,解压、编译、安装。但这里有个坑——PHP 5.6 对 GCC 版本有要求。我用的系统自带 GCC 4.8,编译时直接报错:undefined reference to 'xmlNewTextWriter'。查了半天,是 libxml2 版本太新,跟老 PHP 不兼容。解决办法是编译前加 CFLAGS="-O2 -fno-strict-aliasing",还得手动指定 --with-libxml-dir=/usr/local/libxml2-old。折腾完这些,才进入正常的 ./configure 流程。
配置参数别贪多。我只需要跑一个遗留的 CMS,所以只开了必要的扩展:--with-mysql、--with-mysqli、--with-gd、--with-curl。如果你不配数据库支持,后面写代码时会发现自己被绑住手脚。注意,PHP 5.6 还不支持 mysqlnd 的某些特性,得用老式的 libmysqlclient 库,这又得额外装个 mysql-community-libs-compat。
编译过程大概五分钟。期间你会看到一堆 warning,别慌,那是常态。真正要命的是最后链接阶段报错,如果出现 undefined reference,多半是某个扩展的依赖库没找对路径。我的经验是,先不加任何扩展,只编译核心,确认能跑通再加扩展,这样排查问题快得多。
安装完成后,验证一下:php -v 输出 PHP 5.6.40 就代表成功。但别高兴太早,你还需要配置 php-fpm。PHP 5.6 的 php-fpm 配置文件默认是 php-fpm.conf.default,复制一份改成 php-fpm.conf,再编辑 www.conf 里的 listen 和 user 参数。我那次忘了改 user,结果 php-fpm 以 root 身份跑,被安全扫描工具直接标红。
整个流程走下来,最花时间的不是下载和编译,而是解决环境依赖。老 PHP 跟新系统库的兼容性问题,就像拿旧地图找新路。你得有耐心,一个报错一个报错地磨。但如果你只是临时测试老代码,还有个更省事的办法——用 Docker 拉一个 php:5.6 镜像,三分钟搞定,不用碰这些糟心事。不过那篇文章就变成「Docker 拉取 PHP 5.6」了,跟标题不符。
最后说句实在话,除非业务卡死必须用 PHP 5,否则别碰它。安全漏洞没人补,性能也跟不上现代框架。但如果你真到了这一步,上面这些过程能帮你少走弯路。装完记得把源码包和编译日志留好,下次重装能省两小时。