Как мне увеличить размер стека для Apache, работающего под Windows 7? - PullRequest
21 голосов
/ 20 февраля 2011

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

1 Ответ

68 голосов
/ 29 сентября 2011

Эта проблема чаще возникает на платформе 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!:)

...