답변:
다음 코드를 사용하십시오.
ini_set("log_errors", 1);
ini_set("error_log", "/tmp/php-error.log");
error_log( "Hello, errors!" );
그런 다음 파일을보십시오.
tail -f /tmp/php-error.log
또는 2008 년 부터이 블로그 항목에php.ini
설명 된대로 업데이트하십시오 .
php_flag log_errors on php_value error_log /home/path/public_html/domain/PHP_errors.log
. perishablepress.com/…
tmp/php-error.log
를 원하는 위치에서 원하는 위치로 변경 한 것 같습니다 .
다음 코드를 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>
* 논평 : 이것은 아파치 타입 서버를위한 것이며 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에 작성하십시오.