Apache2.4无法启动和PHP没有加载扩展到的解决方法

Apache2.4无法启动和PHP没有加载扩展到的解决方法

● Apache2.4无法启动

●● 症状:

双击 httpd.exe 正常,但是以服务方式无法启动,报错如下

> net start apache2.4

Apache2.4 服务正在启动 .
Apache2.4 服务无法启动。

发生服务特定错误: 1.

请键入 NET HELPMSG 3547 以获得更多的帮助。

 

●● 解决过程

查看 apache2.4\logs\error.log 只提示 Apache2.4 收到一个 Received shutdown signal ,再无任何可用信息。

由于以服务方式启动,windows一定有日志记录,于是打开 ”事件管理器“ ,确实看到“错误”记录

Apache2.4 服务由于下列服务特定错误而终止:

函数不正确。

The Apache service named reported the following error:
>>> httpd.exe: Syntax error on line 78 of D:/WEBSERV/Apache24/conf/httpd.conf:
Cannot load modules/mod_perl.so into server: \xd5\xd2\xb2\xbb\xb5\xbd\xd6\xb8\xb6\xa8\xb5\xc4\xc4\xa3\xbf\xe9\xa1\xa3 .

于是 在 httpd.conf 中注销了 mod_perl
# LoadModule perl_module modules/mod_perl.so

net stop Apache2.4
sc delete Apache2.4
D:\WEBSERV\Apache24\bin\httpd -k install
net start Apache2.4

Apache2.4 启动成功。

●● 总结

1. 以上报错是由于APACHE找不到相关模块的DLL

比如没有安装对应的VC库,或者是模块专用的DLL文件没有加载,这个DLL文件一般放置于Apache24/bin 目录,

需要把 perl 加载到系统 path 环境变量中,这样 MOD_perl 就能找到相应的 dll 了

2. Apache2.4 无法启动听说还有可能是由于 80 端口被占用,启用了 LMHOSTS 等原因

端口是否占用 netstat -ano|findstr "80"

在 INTERNET 设置中,将启用LMHOSTS前面的对号给去掉

 

●当解决了无法启动 Apache2.4 的问题之后,PHP又出了问题,真是按下葫芦浮起瓢。

●● 症状:

在运行一个脚本时报错

Warning: file_get_contents(): Unable to find the wrapper "https" - did you forget to enable it when you configured PHP?

●● 解决过程

这明显是openssl的问题,查看 phpinfo() 之后,发现没有加载 OPENSSL扩展

首先 php.ini是开启了OPENSSL的 , 用 php -m 指令查看确实有加载OPENSSL

那问题来了, 在Apache2.4和php的关联设置中,导致找不到PHp的扩展模块或者模块报错没有被加载

1. 相关的DLL文件没有加载

在php目录拷贝相关的 DLL 文件到 Apache24\bin\ 目录,

然后在 httpd.conf 或者相关的Apache的的配置文件中加入 LoadFile "D:\WEBSERV\Apache24\libssh2.dll

上面的这个DLL位于 http://windows.php.net/downloads/pecl/releases/ssh2/0.12/

2. php.ini的 ext 指向错误,导致一些扩展没有加载。

如果php单独可以使用,但是关联到APACHE中就找不到扩展模块,一般是由于 php.ini的 ext和 Apache中配置的ext参数不统一导致的。

 

本次在 php.ini中重新配置了ext后,重启一切正常。

 


● 附带Windows事件查看器的应用


打开 控制面板\所有控制面板项\管理工具\事件查看器
或者 按下 win+r 的运行对话框中输入 eventvwr.msc 按回车键打开事件查看器

在 事件查看器\Windows 日志\应用程序 中的最上面找到“错误”信息,如果正在调试Apache ,这个错误就是它的

为了醒目,按下最右侧的“清除日志”,把所有的日志都清除了,然后再次打开 事件查看器,当前应用程序的”错误“ 更醒目。

 

上一篇:[Reach教程翻译] | 2.2 创建DApp脚手架


下一篇:17.Linux软件安装之源码包安装