Как включить все ошибки и предупреждения и записать их в файл, но настроить все это в скрипте (ничего не изменяя в php.ini). Я хочу определить имя файла и так, чтобы все ошибки и предупреждения вошли в него.
Используйте следующий код:
ini_set("log_errors", 1); ini_set("error_log", "/tmp/php-error.log"); error_log( "Hello, errors!" );
Затем просмотрите файл:
tail -f /tmp/php-error.log
Или обновите php.ini
как описано в этой записи в блоге с 2008 года.
Видеть
error_log
– Отправить сообщение об ошибке где-нибудь пример
error_log("You messed up!", 3, "/var/tmp/my-errors.log");
Вы можете настроить обработку ошибок с помощью собственных обработчиков ошибок, чтобы вызывать эту функцию для вас всякий раз, когда возникает ошибка или предупреждение или что-то, что вам нужно для регистрации. Дополнительную информацию см. В разделе Обработка ошибок главы в Руководстве по PHP
добавьте этот код в .htaccess (если у вас нет доступа к php.ini )
<IfModule mod_php5.c> php_flag log_errors on php_value error_log ./path_to_MY_PHP_ERRORS.log </IfModule>
ps это для серверов типа Apache.
Взгляните на log_errors
конфигурации log_errors
в php.ini. Кажется, вы делаете именно то, что хотите. Я думаю, вы можете использовать параметр error_log
чтобы установить собственный файл ведения журнала.
Если директиве log_errors
установлено значение « On
, любые ошибки, о которых сообщает PHP, будут записываться в журнал сервера или файл, указанный с помощью error_log
. Вы также можете установить эти параметры с помощью ini_set
, если вам нужно.
(Обратите внимание, что display_errors
должен быть отключен в php.ini, если этот параметр включен)
Это моя личная короткая функция
# logging /* [2017-03-20 3:35:43] [INFO] [file.php] Here we are [2017-03-20 3:35:43] [ERROR] [file.php] Not good [2017-03-20 3:35:43] [DEBUG] [file.php] Regex empty mylog ('hallo') -> INFO mylog ('fail', 'e') -> ERROR mylog ('next', 'd') -> DEBUG mylog ('next', 'd', 'debug.log') -> DEBUG file debug.log */ function mylog($text, $level='i', $file='logs') { switch (strtolower($level)) { case 'e': case 'error': $level='ERROR'; break; case 'i': case 'info': $level='INFO'; break; case 'd': case 'debug': $level='DEBUG'; break; default: $level='INFO'; } error_log(date("[Ymd H:i:s]")."\t[".$level."]\t[".basename(__FILE__)."]\t".$text."\n", 3, $file); }
Кроме того, для этого вам потребуется директива «AllowOverride Options». (Apache 2.2.15)
Просто введите эти коды в начало вашего файла PHP / index:
error_reporting(E_ALL); // Error engine ini_set('display_errors', TRUE); // Error display ini_set('log_errors', TRUE); // Error logging ini_set('error_log', 'your/path/to/errors.log'); // Logging file ini_set('log_errors_max_len', 1024); // Logging file size