Я копирую / мигрирую проект Cake php 2.3.8 производственного сервера в разрабатываемый, но получаю известную ошибку:
Blockquote Fatal Error Error: Допустимый размер памяти 1073741824 исчерпаны байты (попытка выделить 200648563 байта) Файл: / var / www/html/lib/Cake/Utility/String.php Строка: 243
Примечание: если вы хотите настроить это сообщение об ошибке, создайте приложение / View / Errors / fatal_error.ctp
Я уже зеркалировал те же спецификации, что и производственный сервер:
- Пытался увеличить лимит памяти по умолчанию на apache> php .ini файл от 128M до 1024
- Также от 1024 до 2048, но не повезло
- Перезагрузил сервер и apache сервис
- Ограничить набор данных в моей базе данных (в настоящее время их 6, но на производственном сервере около 40K строк в таблице, которую я запрашиваю)
- Протестировал функцию внутри контроллера, чтобы просто отображать одну строка текста (успешно отображает, но фатальная ошибка сообщение продолжает появляться).
Обычно это происходит, когда я посещаю определенные контроллеры, потому что я могу правильно загружать некоторые страницы (очевидно).
Я сейчас отладка поведения приложения в файлах журнала:
- / ppp / tmp / logs / error.log
- Xdebug
Но ни один из них не показывает более подробную информацию о пределе фатальной ошибки, мне сказали, что это может быть утечка памяти, почему же оба сервера ограничены одинаково? (ulimit для серверов ниже).
Я хотел бы знать, в чем проблема, мне не хватает настройки? Как я могу настроить контроллер так, чтобы он работал без ошибок?
Характеристики сервера Dev
- Centos 7
- PHP 5.4.16 (cli) (построено: 1 апреля 2020 г. 04:07:17)
Авторские права (c) 1997-2013 * Группа PHP
Zend Engine v2.4.0, Авторские права (c) 1998-2013 Zend Technologies
с Xdebug v2. 2.7, Copyright (c) 2002-2015, Дерик Ретанс
- VPS на Linode: 2 ядра 4 ГБ ОЗУ
- Ulimit:
файл ядра size (блоки, - c) 0
размер сегмента данных (кбайт, -d) неограничен
приоритет планирования (-e) 0
размер файла (блоки, -f) неограничен
ожидающие сигналы (-i) 15076
максимальный размер заблокированной памяти (кбайт, -l) 64
максимальный размер памяти (кбайт, -m) неограничен
открытые файлы (-n) 1024
размер канала (512 байт, -p) 8
очереди сообщений POSIX (байты, -q) 819200
приоритет реального времени (-r) 0
размер стека (кбайт, -s) 8192
время процессора (секунды, - t) неограниченно
максимальное количество пользовательских процессов (-u) 15076
виртуальная память (кбайт, -v) неограниченно * 1 084 * файловые блокировки (-x) неограниченно
Рабочий сервер
- Centos 7
- PHP 5.4.16 (cli) (построено: 1 апреля 2020 г., 04:07:17)
Авторские права (c) 1997-2013 * Группа PHP
Zend Engine v2.4.0, Авторские права (c) 1998-2013 Zend Technologies
- Выделенный сервер: 16 ядер (32 потока), 128 ГБ ОЗУ
- Ulimit:
размер основного файла ( блоков, - c) 0
размер сегмента данных (кбайт, -d) неограничен
приоритет планирования (-e) 0
размер файла (блоки, -f) неограничен
ожидающие сигналы (- i) 514324
максимальный размер заблокированной памяти (кбайт, -l) 64
максимальный размер памяти (кбайт, -m) неограничен
открытые файлы (-n) 8192
размер канала (512 байтов, -p ) 8
очереди сообщений POSIX (байты, -q) 819200
приоритет реального времени (-r) 0
размер стека (кбайт, -s) 8192
время процессора (секунды, -t) безлимит
максимальное количество пользовательских процессов (-u) 8192
виртуальная память (кбайт, -v) неограниченно
файловые блокировки (-x) неограниченно
Заранее спасибо
ОБНОВЛЕНИЕ 1 Это то, что появляется после копирования lib / Cake / View / Errors / fatal_error.ctp в app / View / Errors / fatal_error.ctp и добавления
<code><pre><?php echo h($error->getTraceAsString()); ?>
Неустранимая ошибка Ошибка: допустимый размер памяти 1073741824 байтов исчерпан (попытка выделить 126212148 байтов) Файл: / var / www/html/lib/Cake/Utility/String.php Строка: 243
Уведомление : Если вы хотите изменить это сообщение об ошибке, создайте app / View / Errors / fatal_error.ctp
Обновление от 9 июля '20
# 0 / var / www/html/lib/Cake/Error/ErrorHandler.php (184): ErrorHandler :: handleFatalError (1, 'Допустимая память ...', '/ var / www/html/l...', 243)
# 1 [внутренняя функция]: ErrorHandler :: handleError (1, 'Допустимая память .. . ',' / var / www/html/l... ', 243, Массив)
# 2 / var / www/html/lib/Cake/Core/App.php (931): call_user_fun c (' ErrorHandler :: h ... ', 1 , 'Допустимая память ...', '/ var / www/html/l...', 243, Array)
# 3 / var / * 1 156 * (904): App :: _ checkFatalError ()
# 4 [внутренняя функция]: App :: shutdown ()
# 5 {main}
До этого я извлекал некоторые компоненты и помощники:
var $helpers=array("Js","Html","Form","Paginator","Fck","Cache","Pagination");
var $components=array("Customcomponent","Paginator","RequestHandler","Cookie","Pagination","Email");
Но не повезло (появилось такое же сообщение об ошибке), мой другой работающий контроллер не использует помощников, только следующие компоненты:
var $components=array("Customcomponent","RequestHandler","Cookie","Email","Pagination","Paginator");