모든 오류와 경고를 켜고 파일에 기록하지만 스크립트 내에서 모든 것을 설정하려면 어떻게해야합니까 (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)