Как включить все ошибки и предупреждения и записать их в файл, но настроить все это в script (ничего не изменяя в php.ini). Я хочу определить имя файла и чтобы все ошибки и предупреждения вошли в него.
Как регистрировать ошибки и предупреждения в файле?
Ответ 1
Используйте следующий код:
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 года.
Ответ 2
См
-
error_log
- Отправить сообщение об ошибке где-то
Пример
error_log("You messed up!", 3, "/var/tmp/my-errors.log");
Вы можете настроить обработку ошибок с помощью собственных обработчиков ошибок, чтобы вызывать эту функцию для вас всякий раз, когда возникает ошибка или предупреждение или что-то, что вам нужно для регистрации, Дополнительную информацию см. В Обработка ошибок главы в Руководстве по PHP
Ответ 3
добавьте этот код в .htaccess (если у вас нет доступа к php.ini)
<IfModule mod_php5.c>
php_flag log_errors on
php_value error_log ./path_to_MY_PHP_ERRORS.log
</IfModule>
p.s. это для серверов типа Apache.
Ответ 4
Посмотрите параметр конфигурации log_errors
в php.ini. Кажется, вы делаете именно то, что хотите. Я думаю, вы можете использовать параметр error_log
, чтобы установить свой собственный файл ведения журнала.
Если директиве log_errors
установлено значение On
, любые ошибки, сообщаемые PHP, будут записываться в журнал сервера или файл, указанный с помощью error_log
. Вы можете установить эти параметры с помощью ini_set
, если вам нужно.
(Обратите внимание, что display_errors
следует отключить в php.ini, если этот параметр включен)
Ответ 5
Что моя личная короткая функция
# 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("[Y-m-d H:i:s]")."\t[".$level."]\t[".basename(__FILE__)."]\t".$text."\n", 3, $file);
}
Ответ 6
Кроме того, для этого вам потребуется директива "AllowOverride Options". (Apache 2.2.15)
Ответ 7
Просто разместите эти коды в верхней части вашего файла 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