如何增加在Windows 7下运行的Apache的堆栈大小?

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!:)

  • 这对我有用,我的日志中甚至没有错误,只是过程成功退出. (8认同)