PHP 오류 로그를 기록하는 방법: 먼저 PHP 구성 파일을 설정한 다음 지정된 파일을 사용하여 오류 보고서 로그를 기록합니다. 마지막으로 오류 정보가 운영 체제 로그에 기록됩니다.
PHP 오류 로그 기록 방법:
1. 지정된 파일을 사용하여 오류 보고서 로그를 기록합니다.
자신이 지정한 파일을 사용하여 오류 로그를 기록하는 경우 반드시 저장하세요. 공격을 받을 가능성을 줄이기 위해 루트 디렉터리 외부의 문서에 이 파일을 저장합니다.
그리고 파일은 PHP 스크립트를 실행하는 사용자(웹 서버 프로세스 소유자)가 작성해야 합니다. Linux 운영 체제에서는 /usr/local/ 디렉터리의 error.log 파일이 오류 로그 파일로 사용되고 웹 서버 프로세스 사용자에게 쓰기 권한이 설정되어 있다고 가정합니다. 그런 다음 PHP 구성 파일에서 error_log 지시문의 값을 오류 로그 파일의 절대 경로로 설정합니다.
관련 학습 권장 사항: php 프로그래밍(동영상)
다음과 같이 php.ini의 구성 지침을 수정해야 합니다.
error_reporting = E_ALL ; 발생하는 모든 오류는 PHP에 보고됩니다.
bool error_log ( string message [, int message_type [, string destination [, string extra_headers]] )이 함수는 웹 서버, TCP 서버의 오류 로그 파일 또는 지정된 파일로 오류 정보를 보냅니다. 이 함수는 성공하면 TRUE를, 실패하면 FALSE를 반환합니다. 첫 번째 매개변수 메시지는 필수이며 전송되는 오류 메시지입니다. 이 매개변수만 사용하는 경우 구성 파일 php.ini에 설정된 위치로 메시지가 전송됩니다. 두 번째 매개변수 message_type은 정수 값입니다. 0은 운영 체제의 로그로 보내는 것을 의미하고, 1은 PHP의 Mail() 함수를 사용하여 메시지를 이메일 주소로 보내는 것을 의미하며 네 번째 매개변수 extra_headers도 사용됩니다. 2는 TCP 서버로 오류 메시지를 보내는 것을 의미합니다. 이때 세 번째 매개변수인 대상은 대상 IP와 포트를 나타냅니다. 3. 파일 대상에 정보를 저장합니다. 오라클 데이터베이스에 로그인하는 문제를 예로 들면, 이 기능의 사용법은 다음과 같습니다.
<?php if(!Ora_Logon($username, $password)){ error_log("Oracle数据库不可用!", 0); //将错误消息写入到操作系统日志中 } if(!($foo=allocate_new_foo()){ error_log("出现大麻烦了!", 1, ". mydomain.com"); //发送到管理员邮箱中 } error_log("搞砸了!", 2, "localhost:5000"); //发送到本机对应5000端口的服务器中 error_log("搞砸了!", 3, "/usr/local/errors.log"); //发送到指定的文件中 ?>
2. 오류 정보는 운영 체제 로그에 기록됩니다.
오류 보고서도 기록될 수 있습니다. 운영 체제 로그에 있지만 운영 체제마다 로그 관리에 약간의 차이가 있습니다. Linux에서는 오류 설명이 syslog로 전송되고, Windows에서는 오류가 이벤트 로그로 전송됩니다. syslog에 익숙하지 않다면 최소한 시스템 및 애플리케이션 실행과 관련된 메시지를 기록하는 API를 제공하는 UNIX 기반 로깅 도구라는 점은 알아두십시오. Windows 이벤트 로그는 실제로 UNIX의 syslog와 동일하며 일반적으로 이벤트 뷰어를 통해 이러한 로그를 볼 수 있습니다. 운영 체제 로그에 오류 보고서를 쓰려면 구성 파일에서 error_log 지시문의 값을 syslog로 설정할 수 있습니다.define_syslog_variables()
define_syslog_variables()
在使用openlog()、syslog及closelog()三个函数之前必须先调用该函数。因为在调用该函数时,它会根据现在的系统环境为下面三个函数初使用化一些必需的常量。
openlog()
이 함수는 openlog(), syslog 및 closelog() 세 가지 함수를 사용하기 전에 호출되어야 합니다. 왜냐하면 이 함수가 호출되면 현재 시스템 환경에 따라 다음 세 가지 함수에 필요한 일부 상수가 초기화되기 때문입니다.
openlog()
🎜打开一个和当前系统中日志器的连接,为向系统插入日志消息做好准备。并将提供的第一个字符串参数插入到每个日志消息中,该函数还需要指定两个将在日志上下文使用的参数,可以参考官方文档使用。
syslog()
该 函数向系统日志中发送一个定制消息。需要两个必选参数,第一个参数通过指定一个常量定制消息的优先级。例如LOG_WARNING表示一般的警 告,LOG_EMERG表示严重地可以预示着系统崩溃的问题,一些其他的表示严重程度的常量可以参考官方文档使用。第二个参数则是向系统日志中发送的定制 消息,需要提供一个消息字符串,也可以是PHP引擎在运行时提供的错误字符串。
closelog()
该函数在向系统日志中发送完成定制消息以后调用,关闭由openlog()函数打开的日志连接。
如果在配置文件中,已经开启向syslog发送定制消息的指令,就可以使用前面介绍的四个函数发送一个警告消息到系统日志中,并通过系统中的syslog解析工具,查看和分析由PHP程序发送的定制消息,如下所示:
define_syslog_variables(); openlog("PHP5", LOG_PID , LOG_USER); syslog(LOG_WARNING, "警告报告向syslog中发送的演示, 警告时间:".date("Y/m/d H:i:s")); closelog(); ?>
相关学习推荐:编程视频
위 내용은 PHP 오류를 기록하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!