Я только что перевел один сайт с Linux на Windows и получаю странные сообщения о фатальных ошибках. Мой Linux PHP имел ограничение памяти 256 МБ и никогда не имел ни одной фатальной ошибки «нехватки памяти».
Теперь в IIS у меня такой же лимит памяти, но я получаю слишком много
PHP Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 32508940 bytes) in C:\...\functions.php on line 0
Я попытался увеличить (400 МБ), чтобы посмотреть, что произойдет, и вот что у меня получилось
PHP Fatal error: Allowed memory size of 419430400 bytes exhausted (tried to allocate 65013862 bytes) in C:\....\dbfunctions.php on line 1073741824
Странно, это то же приложение, те же настройки ограничения памяти .. Также странно то, что во второй ошибке написано «на строке 1073741824», но ничего себе, в этом файле 500 строк. Это проблема Windows / IIS / PHP?
Моя конфигурация: IIS 8.0, PHP 5.3.28, PHP-обработчик php-cgi.exe
Кажется, существует множество проблем, связанных с расширением кэша Windows для PHP, которое устанавливает жесткие ограничения памяти для php.
Существуют примеры и сообщения в блогах, в которых удаление wincache решает проблему, но это может отрицательно сказаться на производительности сайта.
Пример похожих проблем, связанных с wincache
php.ini
- находится в корневой папке. Отредактируйте в TextPad и измените значение momory_limit. если 4M недостаточно до 8M и т. д.
В admin.php
(если ваша ошибка здесь) добавьте строку ограничения памяти после ini_set 'memory_limit', '12M'
если вы хотите добавить 12 МБ памяти
Вы можете добавить строку в .htaccess
: php_value memory_limit 32M
wp-config.php
может управлять памятью. Вы помещаете строку, которая выглядит так
define('WP_MEMORY_LIMIT', '32M');
Информация взята с phpbb.com и technet.microsoft.com