[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_errorsphp.ini 의 구성 옵션을 살펴보십시오 . 원하는대로하는 것 같습니다. error_log옵션을 사용하여 자체 로깅 파일을 설정할 수도 있다고 생각합니다 .

log_errors지시문이로 설정 되면 OnPHP가보고 한 모든 오류는 서버 로그 또는로 지정된 파일에 기록됩니다 error_log. ini_set필요한 경우 이러한 옵션을 설정할 수도 있습니다 .

( display_errors이 옵션이 활성화 된 경우 php.ini에서 비활성화해야합니다.)


답변

또한이 기능을 사용하려면 “AllowOverride Options”지시문이 필요합니다. (아파치 2.2.15)