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