[php] 오류 및 경고를 파일에 어떻게 기록합니까?
모든 오류와 경고를 켜고 파일에 기록하지만 스크립트 내에서 모든 것을 설정하려면 어떻게해야합니까 (php.ini에서 아무것도 변경하지 않음)?
파일 이름을 정의하고 모든 오류와 경고가 파일에 기록되도록하고 싶습니다.
답변
다음 코드를 사용하십시오.
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
설명 된대로 업데이트하십시오 .
답변
보다
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
답변
이 코드를 .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에서 비활성화해야합니다.)
답변
또한이 기능을 사용하려면 “AllowOverride Options”지시문이 필요합니다. (아파치 2.2.15)
