Допустимый объем памяти
Я использую 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 ответ
- Проверьте версию PHP и - особенно - если mysqli на хосте основан на mysqlnd. Вы можете использовать phpinfo() для этого. Измените хост, если это не так.
- Не будьте жадными в определениях таблиц вашей базы данных. Если вам нужно хранить только страницу текста, не определяйте столбец как 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