首页 > 后端开发 > 正文

php错误日志框架 如何记录PHP错误日志

2023-09-08 04:08:48 | 我爱编程网

php错误日志框架 如何记录PHP错误日志相关内容,小编在这里做了整理,希望能对大家有所帮助,关于php错误日志框架 如何记录PHP错误日志信息,一起来了解一下吧!

php错误日志框架 如何记录PHP错误日志

php-fpm错误日志不能记录怎么办

要想让php-fpm显示错误日志,首先需要配置php-fpm。
在php-fpm的配置文件中(一般位于php安装目录下的etc/php-fpm.conf)配置php错误日志的文件路径。

1
2
3
4
5
6

; Error log file
; If it's set to "syslog", log is sent to syslogd instead of being written
; in a local file.
; Note: the default prefix is /home/wangwei/php/var
; Default Value: log/php-fpm.log
;error_log = log/php-fpm.log

如上是我的php-fpm.conf文件中配置错误日志的地方。把error_log = log/php-fpm.log之前的;去掉,然后修改为:

; Error log file
; If it's set to "syslog", log is sent to syslogd instead of being written
; in a local file.
; Note: the default prefix is /home/wangwei/php/var
; Default Value: log/php-fpm.log
error_log = /home/work/log/php-fpm.log.wf

修改之后,保存配置,然后重启php-fpm就可以啦。
注意如果用相对路径的话,的路径的前缀是基于php安装目录的var目录的。

php错误日志框架 如何记录PHP错误日志

如何记录PHP错误日志


记录PHP错误日志的方法:首先设置PHP的配置文件;然后将使用指定的文件记录错误报告日志;最后错误信息记录到操作系统的日志里。
记录PHP错误日志的方法:
1、使用指定的文件记录错误报告日志
如果使用自己指定的文件记录错误日志,一定要确保将这个文件存放在文档根目录之外,以减少遭到攻击的可能。

并且该文件一定要让PHP脚本的执行用户 (Web服务器进程所有者)具有写权限。假设在Linux操作系统中,将/usr/local/目录下的error.log文件作为错误日志文件,并设置 Web服务器进程用户具有写的权限。然后在PHP的配置文件中,将error_log指令的值设置为这个错误日志文件的绝对路径。
相关学习推荐:php编程(视频)

需要将php.ini中的配置指令做如下修改:
error_reporting = E_ALL ;将会向PHP报告发生的每个错误
display_errors = Off ;不显示满足上条 指令所定义规则的所有错误报告
log_errors = On ;决定日志语句记录的位置
log_errors_max_len = 1024 ;设置每个日志项的最大长度

error_log = /usr/local/error.log ;指定产生的 错误报告写入的日志文件位置

PHP 的配置文件按上面的方式设置完成以后,并重新启动Web服务器。这样,在执行PHP的任何脚本文件时,所产生的所有错误报告都不会在浏览器中显示,而会记 录在自己指定的错误日志/usr/local/error.log中。此外,不仅可以记录满足error_reporting所定义规则的所有错误,而且 还可以使用PHP中的error_log()函数,送出一个用户自定义的错误信息。
该函数的原型如下所示:
bool error_log ( string message [, int message_type [, string destination [, string extra_headers]] )此 函数会送出错误信息到Web服务器的错误日志文件、某个TCP服务器或到指定文件中。该函数执行成功则返回TRUE,失败则返回FALSE。第一个参数 message 是必选项,即为要送出的错误信息。如果仅使用这一个参数,会按配置文件php.ini中所设置的位置处发送消息。第二个参数message_type为整 数值:0表示送到操作系统的日志中;1则使用PHP的Mail()函数,发送信息到某E-mail处,第四个参数extra_headers亦会用到;2 则将错误信息送到TCP 服务器中,此时第三个参数destination表示目的地IP及Port;3则将信息存到文件destination中。
如果以登入Oracle数据库出现问题的处理为例,该函数的使用如下所示:
<?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,起码要知道它是基于UNIX的日志工具,它提供了一个API来记录与系统和应用程序执行有关的消息。 Windows事件日志实际上与UNIX的syslog相同,这些日志通常可以通过事件查看器来查看。如果希望将错误报告写到操作系统的日志里,可以在配 置文件中将error_log指令的值设置为syslog。

具体需要在php.ini中修改的配置指令如下所示:
error_reporting = E_ALL ;将会向PHP报告发生的每个错误
display_errors = Off ;不显示 满足上条指令所定义规则的所有错误报告
log_errors = On ;决定日志语句记录的位置
log_errors_max_len = 1024 ;设置每个日志项的最大长度
error_log = syslog ;指定产生的错误报告写入操作系统的日志里
除了一般的错误输出之外,PHP还允许向系统syslog中发送定制的消息。虽然通过前面介绍的error_log()函数,也可以向syslog中发送定制的消息,但在PHP中为这个特性提供了需要一起使用的4个专用函数。
分别介绍如下:
define_syslog_variables()
在使用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错误日志

PHP错误日志如何记录文件位置


PHP错误日志记录文件位置的方法:1、通过模块加载的方式,代码为【php程序中配置 > httpd.conf > php.ini中配置】;2、通过【CGI/fastCGI】模式,代码为【ini_get("error_log")】。
PHP错误日志记录文件位置的方法:
1、确定web服务器 ( IIS, APACHE, NGINX 等) 以哪一种方式支持PHP,通常是有下面2种方式

2、通过模块加载的方式
php程序中配置 > httpd.conf > php.ini中配置3、通过 CGI/fastCGI 模式
php程序中配置 > php.ini中配置
ini_get("error_reporting");
ini_get("log_errors");
ini_get("error_log");输出:
'22527'
'1'
'/usr/local/php7.2.0/var/log/php_errors.log'
如果log_errors = On/usr/local/php7.2.0/var/log/php_errors.log文件不存在,或无法创建,写入,则php错误日志写到apache ErrorLog指令指定的文件
[liuchao@GD-NT-0911QAR1CF_vm1-19.32 conf.d]$ sudo ps -ef |grep httpd
apache 670 2501 0 11:24 ? 00:00:00 /usr/local/httpd-2.4.20/bin/httpd -k graceful
[liuchao@GD-NT-0911QAR1CF_vm1-19.32 conf.d]$ cd /usr/local/httpd-2.4.20/conf/conf.d
[liuchao@GD-NT-0911QAR1CF_vm1-19.32 conf.d]$ sudo grep -anR --color '1.aspire-he-admin' ./
./aspire_he_admin.conf:29: ServerName 1.aspire-he-admin
[liuchao@GD-NT-0911QAR1CF_vm1-19.32 conf.d]$ sudo vim +29 /usr/local/httpd-2.4.20/conf/conf.d/aspire_he_admin.conf<VirtualHost *:80>
DocumentRoot "/home/d139/var/aspire-he-admin/webroot/"
ServerName 1.aspire-he-admin
SetEnv SERVER_ENVERONMENT_PARAM 2
DirectoryIndex index.php index.html
php_value post_max_size 100M
CustomLog "| /usr/sbin/cronolog /home/d139/logs/%Y-%m-%d-%H-he-admin_access.log" combined
ErrorLog "| /usr/sbin/cronolog /home/d139/logs/%Y-%m-%d-%H-he-admin_error.log"
</VirtualHost>[liuchao@GD-NT-0911QAR1CF_vm1-19.32 module]$ sudo tail -f /home/d139/logs/2019-03-13-10-he-admin_error.log
[Wed Mar 13 10:02:01.194757 2019] [php7:error] [pid 17673] [client 127.0.0.1:50312]
PHP Fatal error: Uncaught Error: Call to undefined method VersionManage::
getDb1() in /home/d139/var/aspire-he-admin/module/VersionManage.class.php:82
Stack trace:
#0 /home/d139/var/aspire-he-admin/webroot/api.php(37):
VersionManage::getTxlVersionUpgradeStatus(Array)
#1 {main}
thrown in /home/d139/var/aspire-he-admin/module/VersionManage.class.php on line 82如果php.ini中log_errors= On,据官方的说法,那么必须指定error_log文件,如果没指定或者指定的文件没有权限写入,那么照样会输出到正常的输出渠道,那么也就使得display_errors这个指定的Off失效,错误信息还是打印了出来。将log_errors = Off就行了。
相关学习推荐:php编程(视频)
我爱编程网

以上就是php错误日志框架 如何记录PHP错误日志全部内容了,了解更多相关信息,关注我爱编程网。
与“php错误日志框架 如何记录PHP错误日志”相关推荐
php框架写日志 如何记录PHP错误日志
php框架写日志 如何记录PHP错误日志

如何记录PHP错误日志记录PHP错误日志的方法:首先设置PHP的配置文件;然后将使用指定的文件记录错误报告日志;最后错误信息记录到操作系统的日志里。记录PHP错误日志的方法:1、使用指定的文件记录错误报告日志如果使用自己指定的文件记录错误日志,一定要确保将这个文件存放在文档根目录之外,以减少遭到攻击的可能。并且该文件一定要让PHP脚本的执行用户(Web服务器进程所有者)具

2023-09-12 19:46:31
接口错误码框架php php接口 一般错误码和错误信息如何显示
接口错误码框架php php接口 一般错误码和错误信息如何显示

php如何调试curl错误信息php调试curl错误信息的方法:1、使用函数【curl_errno】和【curl_error】,分别返回HTTP的错误代码和错误类别;2、设置【CURLOPT_VERBOSE】为true,同时将其设置为用fopen打开的一个文件。php调试curl错误信息的方法:第一种方法,首先可以使用的是curl_errno和curl_error函数,分别返回HT

2023-09-24 22:15:30
php查框架错误的方法 php如何提示错误信息
php查框架错误的方法 php如何提示错误信息

php怎样获取mysql错误信息php获取mysql错误信息的方法:可以利用mysql_error()函数来获取。mysql_error()函数可以返回上一个mysql操作产生的文本错误信息,如果没有错误则返回空字符串。mysql_error()函数返回上一个MySQL操作产生的文本错误信息,如果没有出错则返回空字符串。(推荐教程:php图文教程)语法:mysql_erro

2023-10-03 21:33:52
php框架写工作日志 php实现日志管理(记录用户操作)原理
php框架写工作日志 php实现日志管理(记录用户操作)原理

phpmonolog怎么把请求的url,ip,参数这些记录到日志中Monolog是php下比较全又容易扩展的记录日志组件。目前有包括Symfony、Laravel、CakePHP等诸多知名php框架都内置了Monolog。Monolog可以把你的日志发送到文件,sockets,收件箱,数据库和各种web服务器上。一些特殊的组件可以给你带来特殊的日志策略。使用例子123456789

2023-10-01 05:49:53
php框架全局自定义错误 php如何自定义错误函数
php框架全局自定义错误 php如何自定义错误函数

php如何自定义错误函数php自定义错误函数的方法:1、写错误处理函数,参数固定,为【$errno,$errstr】;2、设置错误的处理方式【set_error_handler()】。php自定义错误函数的方法:1)写一个错误处理函数,函数名自己命名,但是参数是固定的,为$errno,$errstr,其中前者默认为错误等级,后者为错误的具体信息。2)设置错误的处理方式。set_

2023-10-03 00:52:12
php框架是如何写入日志的 php monolog 怎么把请求的url,ip,参数这些记录到日志中
php框架是如何写入日志的 php monolog 怎么把请求的url,ip,参数这些记录到日志中

phpmonolog怎么把请求的url,ip,参数这些记录到日志中Monolog是php下比较全又容易扩展的记录日志组件。目前有包括Symfony、Laravel、CakePHP等诸多知名php框架都内置了Monolog。Monolog可以把你的日志发送到文件,sockets,收件箱,数据库和各种web服务器上。一些特殊的组件可以给你带来特殊的日志策略。使用例子123456789

2023-10-06 22:08:59
php框架捕获错误 php怎样获取mysql错误信息
php框架捕获错误 php怎样获取mysql错误信息

PHP用CURL抓取错误提示:Recvfailure:Connectionwasaborted怎么解决求助各位大神一、原因分析web站点目前主要分为http和https两种协议,其中https类型的网站都是通过ssl协议+http协议的,是目前最安全的网站协议,访问此类网站的时候,会走ssl协议,验证访问者的证书,检测是否安全。通过curl访问此类网站也是如此流程,但是cur

2023-09-13 01:04:10
错误处理php框架 php中的错误类型有哪些
错误处理php框架 php中的错误类型有哪些

ThinkPhp框架中使用mongodb数据库配置报错CalltoamemberfunctionselectCollection()onanon-objectTP3.1的解决方法就是如楼上所说,需要实例化mong数据库的模型。so有两种方式:直接在使用的方法内实例化MongoModel类;写一个model专门继承MongoModel,把需要连mongo的操作或方法

2023-09-17 01:12:23