我们有 Windows Server 2012 R2、Apache 2.2.31 和 Php 5.6.18、Zend Server 版本:8.5.3
Apache 似乎越来越频繁地挂起,大多数情况下重新启动 Apache 似乎可以解决问题。当我们查看进程查看器时,发现有相当多的 php-cgi 处于打开状态。
Windows 事件查看器显示多个类似这样的事件,
18 JUL 2016 09:13:23
Faulting application name: php-cgi.exe, version: 5.6.18.0, time stamp: 0x56b9d4d2
Faulting module name: php5.dll, version: 5.6.18.0, time stamp: 0x56b9d4ce
Exception code: 0xc0000005
Fault offset: 0x002f8a02
Faulting process id: 0x1550
Faulting application start time: 0x01d1dfad0acd3f1b
Faulting application path: C:\Zend\ZendServer\bin\php-cgi.exe
Faulting module path: C:\Zend\ZendServer\bin\php5.dll
Report Id: e05b4091-4cc7-11e6-80bb-002590634814
Faulting package full name:
Faulting package-relative application ID:
我可以做些什么来进一步调试它以便找出问题所在?
答案1
有用户在 stackoverflow 上报告了类似的异常 (0xc0000005),这表明问题是一个内存访问错误,并且代码访问了一个零指针(或者由于保护原因被阻止访问..);
https://stackoverflow.com/a/31535903/329931
他们的补救措施是禁用二进制 exe 上的 EMET 功能。这里有一些关于为特定应用程序禁用 EMET 功能的信息;
http://windowsitpro.com/security/using-emet-disable-specific-applications
如果您没有运行 EMET,或者它不能解决您的问题,还有一个较新版本的 Zend 服务器 8.5.5,其中可能包含一个错误修复;
http://www.zend.com/en/products/server/downloads#Windows
以及自 5.6.18 以来的较新版本的 php(当前 5.6.22); http://windows.php.net/downloads/releases/archives/