Відповіді:
Використовуйте наступний код:
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 / індексного файлу:
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.