Apache启用cURL遇阻,phpinfo()显示版本与安装的PHP7.2.4不符
嘿,我来帮你捋捋这个版本不一致的坑——这种情况我之前碰到过好几次,大概率是下面几个原因导致的,你可以逐一排查:
1. Apache加载了旧版本的PHP模块(最常见)
虽然你在httpd.conf里指定了LoadModule php7_module "C:/PHP/php7apache2_4.dll",但有可能:
- 系统里还残留着PHP7.2.1的安装目录,而且
httpd.conf里隐藏了重复的加载配置(比如之前的配置行只是被注释但没删掉,或者在其他被包含的子配置文件里,比如extra/目录下的配置); - 旧版本的
php7apache2_4.dll被Apache优先加载了(比如路径优先级问题)。
你可以先全局搜索httpd.conf及其包含的所有配置文件,确认只有你当前指定的那一行LoadModule php7_module是生效的。
2. 系统环境变量指向了旧版本
当Apache启动时,会依赖系统环境变量里的PHP路径。如果你的PATH里先出现的是PHP7.2.1的目录,那Apache加载模块时会默认调用旧版本的核心文件,导致phpinfo显示错版。
验证方法:打开命令提示符,输入php -v,如果输出的是7.2.1,那就是环境变量的问题——把PHP7.2.4的安装目录移到PATH的最顶端,然后彻底重启Apache。
3. phpinfo读取了错误的配置文件
在phpinfo页面里,找到Loaded Configuration File这一项,看看它指向的php.ini是不是你PHP7.2.4目录下的文件。如果不是,说明Apache加载了旧版本的php.ini,自然会显示旧版本号。
这种情况通常是因为旧版本的PHP没卸载干净,或者你在网站目录里放了自定义的php.ini覆盖了全局配置。
4. Apache没有彻底重启,进程残留
有时候修改httpd.conf后,只是关闭了Apache的控制台窗口,但后台还有httpd.exe进程在运行,新配置根本没生效。
解决方法:打开任务管理器,找到所有httpd.exe进程,全部结束掉,再重新启动Apache,然后刷新phpinfo页面看看。
内容的提问来源于stack exchange,提问作者user4286007

