Windows 7环境下PHP 7.0升级至PHP 7.2故障排查求助
针对PHP 7.0升级到7.2后Apache及OpenSSL问题的排查方案
刚巧之前帮朋友处理过类似的PHP版本升级后遇到的Apache和OpenSSL异常问题,结合你两台Windows 7机器的情况,给你整理下针对性的排查和解决步骤:
第一台机器:Apache 2.4.17无法启动
这类启动失败的问题,核心要先抓日志和兼容性问题,按以下步骤排查:
- 优先查看Apache错误日志:日志路径一般是
Apache24\logs\error.log,启动失败的具体原因(比如模块加载失败、依赖缺失)基本都会在这里明确标注,是最直接的排查依据 - 确认PHP与Apache的VC编译版本兼容:PHP 7.2是基于VC15编译的,如果你用的Apache 2.4.17是VC14版本,两者会存在兼容性冲突。需要确保两者使用相同版本的VC编译包,必要时可以重新下载对应VC版本的Apache安装包
- 修正Apache中PHP模块的加载路径:升级到PHP7.2后,httpd.conf里的PHP模块文件名虽仍是
php7apache2_4.dll,但路径要对应新的PHP7.2目录,比如改成LoadModule php7_module "C:/php72/php7apache2_4.dll",确保路径绝对正确,没有拼写错误 - 检查VC运行库是否安装:PHP7.2依赖VC15的运行库
vcruntime140.dll,如果系统里没装对应的VC Redistributable包,会导致模块加载失败,直接安装对应版本的运行库即可 - 排除端口冲突(概率较低):虽然之前运行正常,但可以用命令
netstat -ano | findstr :80(假设你用80端口)检查是否有其他程序占用了Apache的端口,如有则调整Apache的监听端口
第二台机器:Apache启动正常,但openssl_random_pseudo_bytes函数未知
这个问题大概率是OpenSSL扩展没正确加载,按以下步骤排查:
- 确认php.ini中OpenSSL扩展已开启:打开php.ini,找到
;extension=openssl这一行,去掉前面的分号,改成extension=openssl。同时要确保extension_dir配置的是正确的扩展目录,PHP7.2的扩展目录一般是ext,比如extension_dir = "ext"(如果用相对路径,要保证PHP的环境变量或者Apache的配置能正确定位到这个目录) - 检查扩展文件是否存在且对应版本:去PHP7.2的
ext目录下,确认有php_openssl.dll文件,而且这个文件是PHP7.2版本的,不是之前PHP7.0遗留的旧文件 - 必须重启Apache:修改php.ini后,一定要重启Apache服务,否则新的配置不会生效,扩展还是加载不了
- 用phpinfo()验证扩展加载状态:新建一个测试php文件,内容写
<?php phpinfo(); ?>,访问这个文件后搜索“OpenSSL”,如果能看到OpenSSL的版本、配置等信息,说明扩展加载成功;如果没有,说明还是加载失败,需要回到前面的步骤排查 - 检查系统依赖库:PHP7.2的OpenSSL扩展依赖系统的
libeay32.dll和ssleay32.dll,确保这两个文件在系统的PATH环境变量中,或者直接放在PHP7.2的根目录下,而且是对应版本的文件
内容的提问来源于stack exchange,提问作者Umlorg
相关产品推荐
相关产品推荐

