Ответы:
Используйте следующий код:
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 года.
php_flag log_errors on php_value error_log /home/path/public_html/domain/PHP_errors.log
. Смотрите perishablepress.com/…
tmp/php-error.log
которой когда-либо хотели?
Видеть
error_log
- отправить сообщение об ошибке куда-нибудьпример
error_log("You messed up!", 3, "/var/tmp/my-errors.log");
Вы можете настроить обработку ошибок с помощью своих собственных обработчиков ошибок, чтобы вызывать эту функцию для вас всякий раз, когда возникает ошибка или предупреждение, или что вам нужно для регистрации. За дополнительной информацией обращайтесь к главе «Обработка ошибок» в руководстве по PHP.
Просто поместите эти коды в начало вашего файла PHP / index:
error_reporting(E_ALL); // Error/Exception engine, always use E_ALL
ini_set('ignore_repeated_errors', TRUE); // always use TRUE
ini_set('display_errors', FALSE); // Error/Exception display, use FALSE only in production environment or real server. Use TRUE in development environment
ini_set('log_errors', TRUE); // Error/Exception file logging engine.
ini_set('error_log', 'your/path/to/errors.log'); // Logging file path
display_errors
НИКОГДА не включать на работающем производственном сервере - эта директива предназначена специально для вывода пользователю и не влияет на ведение журнала. php.net/manual/en/…
добавьте этот код в .htaccess (в качестве альтернативы функции php.ini / ini_set ):
<IfModule mod_php5.c>
php_flag log_errors on
php_value error_log ./path_to_MY_PHP_ERRORS.log
# php_flag display_errors on
</IfModule>
* как прокомментировано: это для серверов типа Apache , а не для Nginx или других.
Это моя личная короткая функция
# 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);
}
Посмотрите на log_errors
опцию конфигурации в php.ini. Кажется, делать то, что вы хотите. Я думаю, что вы можете использовать error_log
опцию, чтобы установить свой собственный файл журнала тоже.
Когда log_errors
директива установлена On
, любые ошибки, сообщаемые PHP, будут записываться в журнал сервера или в файл, указанный с помощью error_log
. Вы можете установить эти параметры ini_set
тоже, если вам нужно.
(Обратите внимание, что display_errors
должен быть отключен в php.ini, если эта опция включена)
display_errors
быть отключено, если вы включаете log_errors
? По моему мнению, не имеет смысла. :)
ini_set
работает только если этот код выполняется. Бесполезно для кода с ошибками разбора, потому что ошибка будет до выполнения кода. Вместо этого запишите эти изменения в php.ini.