Ste*_*ito 21 apache stack-overflow windows-7-x64
我想我在Windows 7下的Apache服务器上运行的是一个堆栈溢出运行cakePHP应用程序.
Daw*_*žan 70
在Windows平台上更常出现此问题,因为Apache的默认堆栈大小较小.Windows上有1 MB的默认堆栈大小,与Unix/Linux平台上的8 MB不同.这可能是一个原因,为什么一些例如PHP脚本在Linux上正常工作,但导致Apache在Windows上崩溃.
此外,崩溃是静默的(分段错误),没有错误消息,Apache只是停止响应并且子进程重新启动.浏览器没有数据并呈现空白页面,因此确定错误有点困难.
在PHP中使用长正则表达式时,这是一个常见问题.
Apache的错误日志中只有一个通知,告诉我,子进程崩溃了:
Parent: child process exited with status ... -- Restarting
Run Code Online (Sandbox Code Playgroud)
更改Apache堆栈大小的最佳方法是在Apache的配置文件中使用ThreadStackSize指令.Apache的文档中描述了ThreadStackSize指令:http://httpd.apache.org/docs/2.2/mod/mpm_common.html#ThreadStackSize
因此,在Windows上增加Apache的堆栈大小可能如下所示:
<IfModule mpm_winnt_module>
ThreadStackSize 8388608
</IfModule>
Run Code Online (Sandbox Code Playgroud)
这些行应该放在Apache的配置文件中.为简单起见,您可以将它放到httpd.conf中.或者更好(但不是必须),将它放到httpd-mpm.conf文件中并在httpd.conf中取消注释这一行:
Include conf/extra/httpd-mpm.conf
Run Code Online (Sandbox Code Playgroud)
它将Apache的堆栈大小设置为8 MB,因此它与Linux上的默认值相同.
别忘了重启Apache!:)
| 归档时间: |
|
| 查看次数: |
26764 次 |
| 最近记录: |