이전 글에서는 "PHP의 오류 유형과 오류 수준을 이해하세요"를 가져왔는데, 여기서는 PHP의 오류 유형과 오류 수준을 자세히 소개했습니다. 이번 기사에서는 오류에 대해 살펴보겠습니다. PHP의 오류 유형 및 수준 오류 로그를 구성하고 사용하는 방법. 모두에게 도움이 되기를 바랍니다!
이전 기사에서는 PHP 오류의 예외 처리, 오류 유형 및 오류 수준을 소개했습니다. 다음으로 PHP에서 오류 로그 구성 및 사용을 소개하겠습니다. PHP 개발자의 경우 프로젝트가 사용되면 경로, 데이터베이스 연결, 데이터 테이블 및 기타 정보가 노출되는 것을 방지하기 위해 구성 파일 php.ini의 display_errors
옵션을 즉시 꺼야 합니다. 오류. display_errors
选项关闭,以免因为这些错误而透露路径、数据库连接、数据表等信息。
再投入使用的任何一个项目中,不可避免的会有错误的出现,有些错误报告对开发者是有用的,这时候我们可以通过单独的文本文件来进行错误报告的日志记录。这样的话,开发人员可以更轻松的进行查看系统是否存在问题。将PHP配置文件中的 log_errors
开启的话,就可以将程序中的错误报告写进错误日志中了。
其中这份错误报告会自动记录到服务器的日志文件中,想要发送到系统的syslog
中,也就是系统日志中,也是可以的。接下来我们就一起来看一下怎样去实现这样错误处理的方法吧。
通过指定文件记录错误报告
想要实现使用目标文件来记录错误报告日志,其中重要的是需要让这个制定的文件的位置在文档根目录外面,这样的话受到攻击的可能性较低,而且这个指定文件需要拥有一定的权限,首先我们先来看一下我们需要针对php.ini
的配置指令做出怎样的修改:
<strong>log_errors = On</strong>
;决定日志语句记录的位置<strong>log_errors_max_len = 1024</strong>
;设置每个日志项的最大长度<strong>error_reporting = E_ALL</strong>
;将会向PHP报告发生的每个错误<strong>display_errors = Off</strong>
;不显示满足上条 指令所定义规则的所有错误报告<strong>error_log = /usr/local/error.log</strong>
;指定产生的 错误报告写入的日志文件位置
按照上述的方式修改php.ini文件后,成功设置之后,在运行PHP的脚本文件的时候,就不会在浏览器中有显示错误报告了,这时候错误报告就都显示在这个我们设置的目标文件中,也就是错误日志中了。
另外还需要注意的是,这个目标文件中可以记录error_reporting
定义的错误也可以通过 error_log()
函数将错误信息放到服务器中的错误日志或者这个目标文件中。
error_log()
函数的语法格式如下:
error_log ( string $message [, int $message_type = 0 [, string $destination [, string $extra_headers ]]] ) : bool
其中需要注意的是:
$message
表示需要记录的错误信息;$destination
表示目标,也就是错误消息被发送到的目的地。它的含义描述于以上,由 $message_type
参数所决定;$extra_headers
表示额外的头。当 $message_type
设置为 1 的时候使用。 该信息类型使用了 mail() 的同一个内置函数。
$message_type表示
设置错误应该发送到何处。可能的信息类型有以下几个:
0
:(默认值)将$message
发送到 PHP 的系统日志,使用操作系统的日志机制或者一个文件,取决于配置文件中 error_log 设置了什么;1
:将$message
发送到参数 $destination 设置的邮件地址。 第四个参数 $extra_headers 只有在这个类型里才会被用到;(2已经被弃用了)3
:$message
被发送到位置为 $destination 的文件里。字符 $message 不会默认被当做新的一行;-
사용하는 모든 프로젝트에서는 필연적으로 오류가 발생합니다. 일부 오류 보고서는 개발자에게 유용합니다. 이때 별도의 텍스트 파일을 통해 오류 보고서를 기록할 수 있습니다. 이를 통해 개발자는 시스템에 문제가 있는지 보다 쉽게 확인할 수 있습니다. PHP 구성 파일에서4
:将$message
log_errors
를 활성화하면 프로그램의 오류 보고서를 오류 로그에 작성할 수 있습니다.
syslog
, 즉 시스템 로그로 보낼 수도 있습니다. 다음으로 이러한 오류 처리를 구현하는 방법을 살펴보겠습니다. 파일을 지정하여 오류 보고서를 기록
대상 파일을 사용하여 오류를 기록하고 싶습니다. 보고서 로그에서 중요한 것은 지정된 파일의 위치가 문서 루트 디렉터리 외부에 있어야 공격을 받을 가능성이 낮고 지정된 파일에 특정 권한이 있어야 한다는 것입니다. 먼저 무엇을 살펴보겠습니다.
php.ini
의 구성 지침에 어떤 변경이 필요합니까?🎜
- 🎜
<strong> log_errors = On</strong>
;로그 문 기록 위치 결정🎜🎜 - 🎜
<strong>log_errors_max_len = 1024</strong>
;최대 길이 설정 각 로그 항목 🎜🎜 - 🎜
<strong>error_reporting = E_ALL</strong>
;발생하는 모든 오류는 PHP🎜🎜 - 🎜
<strong>display_errors에 보고됩니다. = 꺼짐</strong>
;이전 명령에 정의된 규칙을 충족하는 모든 오류 보고서를 표시하지 않음🎜🎜 - 🎜
<strong>error_log = /usr/ local/error.log </strong>
;생성된 오류 보고서가 기록되는 로그 파일의 위치를 지정합니다🎜🎜🎜🎜위 방법으로 php.ini 파일을 수정한 후 설정 성공 후 실행 시 PHP 스크립트 파일을 실행하면 오류 보고서가 브라우저에 표시됩니다. 이때 오류 보고서는 우리가 설정한 대상 파일인 오류 로그에 표시됩니다.
🎜🎜또한 이 타겟 파일에는error_reporting
으로 정의된 오류가 기록될 수 있으며, 오류 정보는error_log()를 통해 서버에 기록될 수 있다는 점에 유의하세요.
함수는 오류 로그 또는 이 대상 파일에 있습니다.
🎜🎜error_log()
함수의 구문 형식은 다음과 같습니다.
🎜<?php $link = mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db"); if (!$link) { error_log('Mysql 数据库连接失败!',0); exit(); } ?>
🎜주의해야 할 사항은 다음과 같습니다.
🎜🎜$ message
기록해야 할 오류 정보를 나타냅니다.$destination
은 오류 메시지가 전송되는 대상을 나타냅니다. 그 의미는 위에 설명되어 있으며$message_type
매개변수에 의해 결정됩니다.$extra_headers
는 추가 헤더를 나타냅니다.$message_type
이 1로 설정된 경우 사용됩니다. 이 메시지 유형은 mail()의 동일한 내장 기능을 사용합니다. 🎜🎜$message_type은 설정 오류가 전송되어야 하는 위치를
나타냅니다. 가능한 메시지 유형은 다음과 같습니다: 🎜- 🎜
0
: (기본값)은$message
code>입니다. PHP로 전송된 시스템 로그는 구성 파일에 설정된 error_log에 따라 운영 체제의 로깅 메커니즘이나 파일을 사용합니다. 🎜🎜 - 🎜
1
:$message code> $destination 매개변수에 설정된 이메일 주소로 전송합니다. 네 번째 매개변수 $extra_headers는 이 유형에서만 사용됩니다. (2는 더 이상 사용되지 않습니다.) 🎜🎜<li>🎜<code>3
:$message
는 $에 있는 파일로 전송됩니다. 목적지. $message 문자는 기본적으로 새 줄로 처리되지 않습니다. 🎜🎜 - 🎜
4
:$message
를 SAPI 로그 처리기에 직접 보냅니다. 🎜🎜🎜🎜 다음으로 MySQL 데이터베이스에 로그인하는 경우를 예로 들어보겠습니다. 로그인에 실패하면 오류 정보가 기록됩니다. 🎜<?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"); //发送到指定的文件中 ?>
🎜 오라클 데이터베이스에 로그인하는 문제를 예로 들면, 이 함수의 사용 예는 다음과 같습니다. 🎜<?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"); //发送到指定的文件中 ?>
代码运行之后就会在php.ini 配置文件中
error_log
一项所设置的目录中生成对应的错误日志文件。接下来我们看一下错误信息记录到操作系统的日志里是什么情况。通过系统日志记录错误报告
上文中我们讲到了将使用目标文件来记录错误报告日志,接下来我们就来看一下将错误信息放到操作系统的日志里面,这是可以实现的,其中不同的操作系统,它们的日志管理也是不一样的,下面我们都是使用常见的windows举例,Windows 上错误将发送到事件日志里,可以通过事件查看器来查看。
通过什么样的方法才能够在操作系统的日志里有错误信息呢?这时候我们可以通过php.ini 配置文件中
error_log
,接下来我们看一下应该怎样修改php.ini中的配置文件。修改
error_reporting = E_ALL
用来报告所发生的每个错误;修改display_errors = Off
用来不显示满足上条指令所定义规则的所有错误报告;修改log_errors = On
用于决定日志语句记录的位置;修改log_errors_max_len = 1024
用于设置每个日志项的最大长度;修改error_log = syslog
用于指定产生的错误报告写入操作系统的日志里 。虽然通过前面介绍的
error_log()
函数,可以向 syslog 中发送定制的消息,想要实现将错误信息放到操作系统的日志里面,我们还需要三个函数的帮助,下面我们就来简单的介绍一下:<strong>openlog()</strong>
函数
该函数是用来打开连接的,用于向系统中写入日志信息做的准备。并且每个日志的消息中都有它的一个参数是字符串形式的。
<strong>syslog()</strong>
函数
该函数拥有两个参数,它的作用是用来给系统中的日志给一个特定消息,第一个参数就是用来设置这个消息的优先级,第二个参数即使提供字符串,这个字符串就是这个特定的消息。
<strong>closelog()</strong>
函数
该函数就是用来关闭连接的,这个连接就是上文中
openlog()
函数打开的。那么接下来我们通过示例来看一下实际操作吧,示例如下:
<?php openlog("PHP中文网", LOG_PID, LOG_USER); syslog(LOG_WARNING, "向 syslog 中发送定时消息,发送时间:".date("Y/m/d H:i:s")); closelog(); ?>
以windows系统为例,打开“此电脑”右键选择“管理”选项,进入计算机管理界面,找到图示中应用程序的选项,就能够看到我们自己定制的警告信息了。如下所示:
其中我们需要注意的是:
你所使用的Web服务器环境决定了是使用指定文件还是使用syslog记录错误日志。可以控制服务器的话就可以利用解析工具来查看和分析日志,推荐使用syslog 激励错误日志,网站在共享服务器的虚拟主机中运行,推荐使用单独的文本文件记录错误日志了。
大家如果感兴趣的话,可以点击《PHP视频教程》进行更多关于PHP知识的学习。
- 🎜
위 내용은 오류 보고서를 기록하기 위한 다양한 방법 사용 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

여전히 인기있는 것은 사용 편의성, 유연성 및 강력한 생태계입니다. 1) 사용 편의성과 간단한 구문은 초보자에게 첫 번째 선택입니다. 2) 웹 개발, HTTP 요청 및 데이터베이스와의 우수한 상호 작용과 밀접하게 통합되었습니다. 3) 거대한 생태계는 풍부한 도구와 라이브러리를 제공합니다. 4) 활성 커뮤니티와 오픈 소스 자연은 새로운 요구와 기술 동향에 맞게 조정됩니다.

PHP와 Python은 웹 개발, 데이터 처리 및 자동화 작업에 널리 사용되는 고급 프로그래밍 언어입니다. 1.PHP는 종종 동적 웹 사이트 및 컨텐츠 관리 시스템을 구축하는 데 사용되며 Python은 종종 웹 프레임 워크 및 데이터 과학을 구축하는 데 사용됩니다. 2.PHP는 Echo를 사용하여 콘텐츠를 출력하고 Python은 인쇄를 사용합니다. 3. 객체 지향 프로그래밍을 지원하지만 구문과 키워드는 다릅니다. 4. PHP는 약한 유형 변환을 지원하는 반면, 파이썬은 더 엄격합니다. 5. PHP 성능 최적화에는 Opcache 및 비동기 프로그래밍 사용이 포함되며 Python은 Cprofile 및 비동기 프로그래밍을 사용합니다.

PHP는 주로 절차 적 프로그래밍이지만 객체 지향 프로그래밍 (OOP)도 지원합니다. Python은 OOP, 기능 및 절차 프로그래밍을 포함한 다양한 패러다임을 지원합니다. PHP는 웹 개발에 적합하며 Python은 데이터 분석 및 기계 학습과 같은 다양한 응용 프로그램에 적합합니다.

PHP는 1994 년에 시작되었으며 Rasmuslerdorf에 의해 개발되었습니다. 원래 웹 사이트 방문자를 추적하는 데 사용되었으며 점차 서버 측 스크립팅 언어로 진화했으며 웹 개발에 널리 사용되었습니다. Python은 1980 년대 후반 Guidovan Rossum에 의해 개발되었으며 1991 년에 처음 출시되었습니다. 코드 가독성과 단순성을 강조하며 과학 컴퓨팅, 데이터 분석 및 기타 분야에 적합합니다.

PHP는 웹 개발 및 빠른 프로토 타이핑에 적합하며 Python은 데이터 과학 및 기계 학습에 적합합니다. 1.PHP는 간단한 구문과 함께 동적 웹 개발에 사용되며 빠른 개발에 적합합니다. 2. Python은 간결한 구문을 가지고 있으며 여러 분야에 적합하며 강력한 라이브러리 생태계가 있습니다.

PHP는 현대화 프로세스에서 많은 웹 사이트 및 응용 프로그램을 지원하고 프레임 워크를 통해 개발 요구에 적응하기 때문에 여전히 중요합니다. 1.PHP7은 성능을 향상시키고 새로운 기능을 소개합니다. 2. Laravel, Symfony 및 Codeigniter와 같은 현대 프레임 워크는 개발을 단순화하고 코드 품질을 향상시킵니다. 3. 성능 최적화 및 모범 사례는 응용 프로그램 효율성을 더욱 향상시킵니다.

phphassignificallyimpactedwebdevelopmentandextendsbeyondit

PHP 유형은 코드 품질과 가독성을 향상시키기위한 프롬프트입니다. 1) 스칼라 유형 팁 : PHP7.0이므로 int, float 등과 같은 기능 매개 변수에 기본 데이터 유형을 지정할 수 있습니다. 2) 반환 유형 프롬프트 : 기능 반환 값 유형의 일관성을 확인하십시오. 3) Union 유형 프롬프트 : PHP8.0이므로 기능 매개 변수 또는 반환 값에 여러 유형을 지정할 수 있습니다. 4) Nullable 유형 프롬프트 : NULL 값을 포함하고 널 값을 반환 할 수있는 기능을 포함 할 수 있습니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구
