You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CentOS7下Nginx+PHP-FPM环境中PHP重新编译后未生效的原因

解决编译PHP后phpinfo信息未更新的问题

嘿,我之前也踩过这个一模一样的坑!你编译完PHP但phpinfo里的Build Date和Configure Command没变化,核心原因基本都是新编译的二进制文件没被当前运行的php-fpm服务用上,或者路径/进程处理不到位,给你一步步排查解决:

1. 先搞清楚两个关键路径

首先执行which php,看看系统当前默认调用的PHP二进制文件路径(比如/usr/bin/php或者/usr/local/bin/php)。然后去你PHP源码的编译目录,找到make install生成的新文件:

  • CLI版本在源码根目录的./php
  • php-fpm版本在./sapi/fpm/php-fpm

对比这两个路径和系统当前使用的是不是同一个,如果不一样,说明你编译的新版本压根没替换掉旧的——这是最常见的原因!

2. 彻底替换并重启php-fpm服务

  • 先把旧的php-fpm进程全部杀掉:pkill php-fpm,或者用systemd管理的话执行systemctl stop php-fpm,之后用ps aux | grep php-fpm确认没有残留进程。
  • 把新编译的php-fpm二进制文件替换掉系统原来的(比如cp ./sapi/fpm/php-fpm /usr/sbin/php-fpm,具体路径看你旧文件的位置),或者直接修改php-fpm的启动配置:
    如果是systemd服务,编辑/etc/systemd/system/php-fpm.service,把ExecStart的路径改成你新编译的php-fpm路径,然后执行systemctl daemon-reload && systemctl restart php-fpm。

3. 验证新编译的文件本身是否正确

在源码编译目录执行./php -v和./php -i | grep "Configure Command",看看这里的版本、编译配置是不是你新设置的。如果这里是对的,那就是服务没用到这个文件;如果这里也不对,那试试用make distclean彻底清理旧编译文件,再重新./configure、编译安装——有时候make clean可能没清干净所有缓存。

4. 检查Nginx的fastcgi配置

确认Nginx的站点配置里,fastcgi_pass指向的是不是新php-fpm监听的socket或端口。比如旧的php-fpm可能监听/var/run/php-fpm.sock,而新编译的可能默认在/usr/local/var/run/php-fpm.sock,如果Nginx没改,还是会请求旧的php-fpm进程,自然看不到新的编译信息。

5. 最后排除缓存干扰

虽然概率极低,但可以试试清空浏览器缓存,或者用curl http://你的域名/phpinfo.php | grep "Build Date"直接从服务器获取内容,排除浏览器缓存的影响。


内容的提问来源于stack exchange,提问作者kintsukuroi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:15:34