升级XAMPP中PHP 7.0.9至7.0.30后Apache无法启动求助
我之前也碰到过类似PHP版本升级后Apache启动失败的情况,结合你的操作步骤,咱们一步步来排查解决:
1. 确认PHP与Apache的位数、线程安全匹配
你下载的是64位线程安全版PHP,首先得核对原来XAMPP里的Apache是64位还是32位——有些早期XAMPP默认是32位,强行用64位PHP会导致底层依赖不兼容。右键点击XAMPP目录下的apache/bin/httpd.exe,查看属性→详细信息里的位数标注,如果是32位,就得重新下载对应32位的PHP7.0.30线程安全版替换。
2. 核对Apache配置文件的关键路径
更新配置文件时,这两个关键配置一定要检查正确:
- 打开XAMPP的
apache/conf/extra/httpd-xampp.conf,找到PHPIniDir,确保它指向新PHP文件夹的绝对路径,比如PHPIniDir "C:/xampp/php7030"(注意用正斜杠或者双反斜杠,别用单斜杠) - 同样在这个文件里,
LoadModule php7_module的路径要指向新PHP文件夹里的php7apache2_4.dll,比如LoadModule php7_module "C:/xampp/php7030/php7apache2_4.dll"
别写错路径或者文件名,PHP7.0对应的Apache模块就是php7apache2_4.dll,别和其他PHP版本的模块混淆。
3. 补全缺失的依赖库
PHP7.0.30依赖Microsoft Visual C++ 2015 Redistributable运行库,如果你系统里没装对应位数的版本,会导致Apache加载PHP模块失败。打开控制面板→程序和功能,看看有没有这个运行库,如果没有就安装对应位数的版本(和你的PHP位数一致)。
另外,把新PHP文件夹里的libeay32.dll、ssleay32.dll这两个文件复制到XAMPP的apache/bin目录下,覆盖原来的旧文件——这两个是SSL相关的依赖,版本不匹配也会导致Apache启动失败。
4. 排查其他端口占用(除Skype外)
Skype常用80/443端口,但还有不少程序会占用这两个端口,比如IIS、迅雷、Windows自带的Web部署服务等。可以用命令行快速排查:
打开CMD,依次输入以下命令:
netstat -ano | findstr ":80" netstat -ano | findstr ":443"
查看输出里的PID,然后打开任务管理器→详细信息,找到对应PID的进程,结束后再尝试启动Apache。
5. 通过Apache错误日志定位具体问题
XAMPP面板里点击Apache的「Logs」按钮,打开error.log文件,里面会有更精准的错误提示:
- 如果日志显示
Cannot load ... php7apache2_4.dll into server,大概率是PHP与Apache的位数不兼容,或者路径写错了 - 如果显示
The specified module could not be found,那就是缺VC++运行库或者依赖的DLL文件 - 如果是语法错误,会提示具体的配置文件行号,直接修正即可
按照上面的步骤一步步排查,应该能解决Apache启动失败的问题。
内容的提问来源于stack exchange,提问作者Dhirender

