Допустимый объем памяти

Я использую PHP MySQLi Database Class и на моем локальном компьютере все работает без проблем. Однако, когда я загружаю свой проект на мой хост, я получаю следующую ошибку:

Fatal error: Allowed memory size of 52428800 bytes exhausted (tried to allocate 50331646 bytes) in /usr/home/data/site/public_html/classes/MysqliDb.php on line 678

Строка 678 от MysqliDB.php содержит следующую команду:

call_user_func_array(array($stmt, 'bind_result')`, $parameters);

Когда я печатаю php_value memory_limit 64M в .htaccess файл я получаю эту ошибку:

[Fri May 30 11:03:18 2014] [alert] [client 37.98.159.18] /usr/home/data/site/public_html/.htaccess: Invalid command 'php_value', perhaps misspelled or defined by a module not included in the server configuration, referer: http://site.org/index.php

1 ответ

Решение
  1. Проверьте версию PHP и - особенно - если mysqli на хосте основан на mysqlnd. Вы можете использовать phpinfo() для этого. Измените хост, если это не так.
  2. Не будьте жадными в определениях таблиц вашей базы данных. Если вам нужно хранить только страницу текста, не определяйте столбец как longblob, сделайте его скромным текстом - в более ранних версиях mysqli пытались выделить память для максимально возможного размера на основе определения строки, а не реального размера данных.

Причина в том, что PHP исчерпал максимальный предел памяти, установленный значением конфигурации memory_limit.

Обычно это значение конфигурации PHP имеет очень низкое значение по умолчанию - 8 МБ или 16 МБ.

Итак, увеличьте memory_limit в файле конфигурации сервера php.ini. Вы можете просто изменить это значение с 64 МБ на 256 МБ или 512 МБ в зависимости от ваших потребностей (чем меньше размер, тем лучше).

конфигурация в php.ini файл

memory_limit = 128M
max_execution_time = 19000

Другой вариант - увеличить это через .htaccess fileчтобы решить эту проблему. так должно быть, как показано ниже:

php_value memory_limit 128M 
php_value max_execution_time 19000
Другие вопросы по тегам