PHP在哪里存储错误日志? (php5,apache,fastcgi,cpanel)

我在共享主机上有Cpanel,Apache,PHP是由fastcgi运行的。 PHP在哪里存储错误日志?

有什么其他的方式,我可以find共享主机环境的错误日志,而不是必须通过整个站点结构来查找error_log文件?

我有权访问php.ini (我正在使用PHP版本5.2.16)。

如果php是apache2模块,PHP将错误日志存储在/var/log/apache2 。 共享主机通常将日志文件存储在根目录/log子文件夹中。 但是…如果你有权访问一个php.ini文件,你可以这样做:

 error_log = /var/log/php-scripts.log 

根据rinogo的评论:如果你使用cPanel,你可能要查找的主日志文件被存储(默认)在

 /usr/local/apache/logs/error_log 

如果一切都失败,您可以使用检查日志文件的位置

 <?php phpinfo(); ?> 

尝试phpinfo()并检查“error_log”

在LAMP环境下,PHP错误默认指向这个下面的文件。

 /var/log/httpd/error_log 

所有的访问日志都在:

 /var/log/httpd/access_log 

Linux的

 php --info | grep error 

terminal将输出错误日志位置。

视窗

 php --info | findstr /r /c:"error_log" 

命令提示符将输出错误日志位置

设置日志位置

打开你的php.ini并添加下面一行:

 error_log = /log/myCustomLog.log 

感谢@chelmertez , @Boom这些(对问题的意见)。

如何在Linux上find你的PHP错误日志:

 eric@dev /var $ sudo updatedb [sudo] password for eric: eric@dev /var $ sudo locate error_log /var/log/httpd/error_log 

另一个等同的方法

 eric@dev /home/eric $ sudo find / -name "error_log" 2>/dev/null /var/log/httpd/error_log 

如果您在Google计算引擎中,它也可以是/var/log/apache2/error.log

你可以看到这样的尾巴:

 tail -f /var/log/apache2/error.log 

在php.ini文件中设置error_logvariables时应该使用绝对path,否则错误日志会根据你的相对path进行存储。

 error_log = /var/log/php.errors 

其他解决scheme是编写简单的脚本,它将列出目录树中的所有错误日志文件。

看来,默认情况下,php 不会在任何地方logging错误,php.ini中的error_log键在所有安装过程中都被注释掉了。

一般来说我:

  1. 寻找php.ini文件。 locate php.ini
  2. search这些文件的error_reporting值;

    应该设置哪个php日志级别的合并就足够了。

    例如: E_ALL & ~E_DEPRECATED & ~E_STRICT

  3. 检查error_log值以确保它指向一个实际的位置并且不被注释掉。

    默认值没有给出完整path,只有一个文件名,我不知道这个path正常parsing到哪里。 可能是/var/log/

如果你已经从源代码构buildApache和PHP,那么默认的错误日志是在你的${Apache install dir}/logs/error_log通常是/usr/local/apache2/logs/error_log 。 否则,如果您已经从存储库安装了它,您可以在/var/log/apache2/error_logfind它。您也可以在php.ini设置path,并通过调用phpinfo()validation它。

最好的方法是查看你的httpd.conf文件,看看默认是什么。 它也可以被特定的虚拟主机覆盖。 我首先查看/etc/httpd/conf/httpd.conf/etc/apache2/httpd.conf并searcherror_log。 它可以被列为/ var / log / httpd / error_log或/var/log/apache2/error_log但也可能被列为简单的logs/error_log

在这种情况下,它是一个相对path,这意味着它将在/etc/httpd/logs/error_log 。 如果仍然无法find它,请检查httpd.conf文件的底部,查看您的虚拟主机所在的位置。 它可能在/etc/httpd/conf.d/<-中是“other”或“extra”。 你的虚拟主机可以用ErrorLog“/ path / to / error_log”覆盖它。

如果您使用php5-fpm日志,则应该在默认情况下

 /var/log/php5-fpm.log 

NGINX通常将其存储在/var/log/nginx/error.log或access.log中。 (在任何情况下在Ubuntu上)

在php.ini中configuration错误日志文件时,可以使用绝对path或相对path。 将根据生成脚本的位置来parsing相对path,并且您将在每个有脚本的目录中获得一个日志文件。如果要将所有错误消息转到同一个文件,请使用绝对path文件。

看更多这里: http : //www.php.net/manual/en/ref.errorfunc.php#53025

无论你想要它,如果你设置它的函数调用:error_log($ errorMessageforLog。“\ n”,4,'somePath / SomeFileName.som');

通过运行cat <file location> | grep ErrorLogsearchhttpd.conf文件中的ErrorLog 在命令行中inputcat <file location> | grep ErrorLog 。 例如:

 $ cat /etc/apache2/httpd.conf | grep ErrorLog 

输出:

 # ErrorLog: The location of the error log file. # If you do not specify an ErrorLog directive within a <VirtualHost> ErrorLog "/private/var/log/apache2/error_log" 

find以ErrorLog开头的行,并有你的答案。

注意:对于虚拟主机,您可以编辑虚拟主机文件httpd-vhosts.conf以指定其他日志文件位置。

WordPress的

WP_DEBUG_LOG设置为true时,Wordpress会将error_log()消息引导到/wp-content/debug.log

请参阅WP_DEBUG_LOG的Wordpress文档