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

如何增加在Windows 7下运行的Apache的堆栈大小?,apache,stack-overflow,windows-7-x64,Apache,Stack Overflow,Windows 7 X64,我想在Windows7下的Apache服务器上运行cakePHP应用程序时,会出现堆栈溢出 这个问题在Windows平台上更常见,因为Apache的默认堆栈大小较小。Windows上的默认堆栈大小为1MB,而Unix/Linux平台上的默认堆栈大小为8MB。这可能是一个原因,例如一些PHP脚本可以在Linux上正常工作,但会导致Apache在Windows上崩溃 此外,崩溃是无声的(分段错误),没有错误消息,Apache只是停止响应,子进程重新启动。浏览器不获取任何数据并呈现空白页面,所以判断错

我想在Windows7下的Apache服务器上运行cakePHP应用程序时,会出现堆栈溢出

这个问题在Windows平台上更常见,因为Apache的默认堆栈大小较小。Windows上的默认堆栈大小为1MB,而Unix/Linux平台上的默认堆栈大小为8MB。这可能是一个原因,例如一些PHP脚本可以在Linux上正常工作,但会导致Apache在Windows上崩溃

此外,崩溃是无声的(分段错误),没有错误消息,Apache只是停止响应,子进程重新启动。浏览器不获取任何数据并呈现空白页面,所以判断错误有点困难

在PHP中使用长正则表达式时,这是一个常见问题

Apache的错误日志中只有一条通知,告知子进程崩溃:

Parent: child process exited with status ... -- Restarting
改变Apache堆栈大小的最佳方法是在Apache的配置文件中使用ThreadStackSize指令。Apache文档中有对ThreadStackSize指令的描述:

所以,在Windows上增加Apache的堆栈大小可能如下所示:

<IfModule mpm_winnt_module>
   ThreadStackSize 8388608
</IfModule>
它将Apache的堆栈大小设置为8MB,因此它与Linux上的默认值相同


别忘了重新启动Apache!:)

需要更多信息。什么崩溃在哪里?具体是什么错误消息?没有崩溃,只是Apache发送到浏览器的空白页面。我认为这是堆栈溢出,因为只有在加载zend_扩展进行调试时才会发生,这会增加堆栈深度。就在apache下的应用程序放弃之前,堆栈深度为99,不包括zend。没有错误消息。这对我有效,我的日志中甚至没有错误,只是进程成功退出了。@Freek,你的建议是什么?我有这个通知,但是增加
ThreadStackSize
对我无效。。。有一个特定的应用程序破坏了我的Apache,我想不出来:/好吧,这有多种原因。如果您未能正确配置它(没有重新启动Apache,使用了错误的配置文件等),应用程序甚至需要超过8MB的堆栈(或任何您配置的),或者它甚至可能包含无限循环,因此无论堆栈有多大,它都会吃掉堆栈。或者,您可能有完全不同的问题根源。尝试本地化导致问题的应用程序部分。这修复了我的问题!我在Windows上使用Symfony时遇到堆栈溢出。我在Symfony日志或Apache中没有错误,只是Apache重新启动的信息,但Windows日志显示httpd.exe正在崩溃。经过大量的尝试和错误,我确定我在整个应用程序中有太多的路由参数,但我设置了ThreadStackSize,这一切都很好!
Include conf/extra/httpd-mpm.conf