Подтвердить что ты не робот

Как увеличить размер стека для Apache под управлением Windows 7?

Я думаю, что я получаю переполнение стека, запускающее приложение cakePHP на сервере Apache под Windows 7.

4b9b3361

Ответ 1

Эта проблема происходит чаще на платформе Windows из-за меньшего размера стека Apache по умолчанию. В Windows установлен размер стека 1 МБ, в отличие от 8 МБ на платформах Unix/Linux. Это может быть причиной, почему некоторые, например, PHP-скрипты работают правильно в Linux, но вызывают сбои Apache в Windows.

Кроме того, аварийный сигнал не работает (ошибка сегментации), сообщения об ошибке отсутствуют, Apache просто перестает отвечать на запросы, и дочерний процесс перезапускается. Браузер не получает данных и отображает пустую страницу, поэтому немного сложно решить, что неправильно.

Это обычная проблема при работе с длинными регулярными выражениями в PHP.

В журнале ошибок Apache есть одно уведомление, которое сообщает, что дочерний процесс разбился:

Parent: child process exited with status ... -- Restarting

Лучший способ изменить размер стека Apache - это использовать директиву ThreadStackSize в файле конфигурации Apache. В документации Apache есть описание директивы ThreadStackSize: http://httpd.apache.org/docs/2.2/mod/mpm_common.html#ThreadStackSize

Таким образом, увеличение размера стека Apache в Windows может выглядеть следующим образом:

<IfModule mpm_winnt_module>
   ThreadStackSize 8388608
</IfModule>

Эти строки должны быть помещены в файл конфигурации Apache. Для простоты вы можете указать httpd.conf. Или лучше (но не обязательно), поместите его в файл httpd-mpm.conf, а в httpd.conf раскомментируйте эту строку:

Include conf/extra/httpd-mpm.conf

Он устанавливает размер стека Apache до 8 МБ, поэтому он аналогичен значению по умолчанию для Linux.

И не забудьте перезапустить Apache!:)