我在共享主机上,有cPanel, Apache和PHP是由FastCGI运行的。PHP在哪里存储错误日志?
是否有其他方法可以在共享主机环境中找到错误日志,而不必通过整个站点结构来查找error_log文件?
我可以访问php . ini文件(我使用的是PHP 5.2.16版)。
尝试phpinfo()并检查"error_log"
phpinfo()
在你的php . ini文件中设置error_log变量时,你应该使用绝对路径,否则,错误日志将根据你的相对路径存储。
error_log = /var/log/php.errors
其他解决方案是编写简单的脚本,从目录树中列出所有错误日志文件。
/var/log/apache2
/log
php.ini
error_log = /var/log/php-scripts.log
根据rinogo的注释:如果您正在使用cPanel,您可能正在寻找的主日志文件(默认情况下)存储在
/usr/local/apache/logs/error_log
如果所有这些都失败了,您可以使用
<?php phpinfo(); ?>
在php.ini中配置错误日志文件时,可以使用绝对路径或相对路径。相对路径将基于生成脚本的位置进行解析,并且您将在拥有脚本的每个目录中获得一个日志文件。如果希望所有错误消息都保存在同一个文件中,请使用该文件的绝对路径。
详见错误处理函数。
在灯环境中,PHP错误默认指向下面这个文件。
/var/log/httpd/error_log
所有访问日志分为:
/var/log/httpd/access_log
如果你从源代码构建Apache和PHP,那么错误日志默认生成在你的${Apache install dir}/logs/error_log,即通常是/usr/local/apache2/logs/error_log。
${Apache install dir}/logs/error_log
/usr/local/apache2/logs/error_log
否则,如果你已经从存储库安装了它,你会在/var/log/apache2/error_log找到它。
/var/log/apache2/error_log
你也可以在你的php.ini中设置路径,并通过调用phpinfo()来验证。
如何找到你的PHP错误日志在Linux:
sudo updatedb [sudo] password for eric: sudo locate error_log /var/log/httpd/error_log
另一种等效的方法:
sudo find / -name "error_log" 2>/dev/null /var/log/httpd/error_log
如果你使用php5-fpm默认日志,它应该在下面:
/var/log/php5-fpm.log
最好的方法是查看你的httpd . conf文件,看看默认值是什么。它也可以被特定的虚拟主机覆盖。我首先查看/etc/httpd/conf/httpd.conf或/etc/apache2/httpd.conf并搜索error_log。它可以被列出为/var/log/httpd/error_log或/var/log/apache2/error_log,但也可以简单地列出为logs/error_log。
/etc/httpd/conf/httpd.conf
/etc/apache2/httpd.conf
logs/error_log
在这种情况下,它是一个相对路径,这意味着它将在/etc/httpd/logs/error_log之下。如果你仍然找不到它,检查你的httpd . conf文件的底部,看看你的虚拟主机包括在哪里。它可能在/etc/httpd/conf.d/ <-作为“other”;或“;extra"。你的虚拟主机可以用ErrorLog "/path/to/error_log"覆盖它。
/etc/httpd/logs/error_log
无论你想要它在哪里,如果你在函数调用中设置它:
error_log($errorMessageforLog . "\n", 4, 'somePath/SomeFileName.som');
默认情况下,PHP 不记录日志在任何地方都会出错。在我看到的所有安装中,php.ini中的error_log键都被注释掉了。
error_log
通常我:
查找php . ini文件。locate php.ini。
locate php.ini
搜索这些文件的error_reporting值;
error_reporting
它应该设置为PHP日志级别的任意组合。,
例如:E_ALL & ~E_DEPRECATED & ~E_STRICT
E_ALL & ~E_DEPRECATED & ~E_STRICT
默认值没有给出完整的路径,只有一个文件名,我不知道这个路径通常解析到哪里。可能/var/log/。
/var/log/
如果你在谷歌计算引擎中,它也可以是/var/log/apache2/error.log。
/var/log/apache2/error.log
你可以这样看尾巴:
tail -f /var/log/apache2/error.log
php --info | grep error
终端将输出错误日志位置。
php --info | findstr /r /c:"error_log"
命令提示符将输出错误日志位置。
打开php.ini并添加以下行:
error_log = /log/myCustomLog.log
谢谢chelmertz和Boom对于这些(对问题的评论)。
NGINX通常将其存储在/var/log/nginx/error.log或access.log中(在任何情况下都是Ubuntu)。
通过在命令行上运行cat <file location> | grep ErrorLog搜索httpd . conf文件中的ErrorLog。例如:
cat <file location> | grep ErrorLog
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"
找到以ErrorLog开头的行,这就是你的答案。
注意:对于虚拟主机,您可以编辑虚拟主机文件httpd-vhosts.conf来指定不同的日志文件位置。
httpd-vhosts.conf
当WP_DEBUG_LOG设置为true时,WordPress将把error_log()消息定向到/wp-content/debug.log。
WP_DEBUG_LOG
error_log()
/wp-content/debug.log
WP_DEBUG_LOG参见WordPress文档
这很有帮助。
cPanel错误日志位于:
默认情况下,Apache日志位于:
或
如果有人正在使用自定义日志位置,那么你可以通过运行这个命令来检查它:
cat /etc/apache2/**conf**/httpd.conf | grep ErrorLog
如果你得到一个错误,输入目录不存在,那么你可以运行这个命令来找到正确的位置:
whereis apache
whereis apache2
您处于共享环境中,无法找到错误日志。总是检查cPanel仪表板中是否有选项错误。如果您无法找到错误日志,那么您可以在那里找到它。
在cPanel搜索栏中,搜索Error,它将显示错误页面,这基本上是不同HTTP错误页面的列表,其他Error是错误日志显示的地方。
共享环境中的其他地方:
就像这样:
sudo locate error.log | xargs -IX grep -iH "errorlog" X
sudo locate error_log | xargs -IX grep -iH "errorlog" X
sudo find / -iname "error?log" 2>/dev/null | xargs -IX grep -iH "errorlog" X
对于PHP-FPM,只需要在配置文件中搜索error_log:
cat /etc/php-fpm.d/www.conf | grep error_log php_admin_value[error_log] = /var/log/php-fpm/www-error.log
因为某种原因,我把它存储在:
/var/log/php-errors.log
我使用Ubuntu Server 16.04 (Xenial Xerus)和PHP 7.1.28。
对于CentOS 8,它是var/log/httpd/error_log。
var/log/httpd/error_log
在共享的cPanel环境中,如果你的主机提供商没有在cPanel仪表板中提供任何选项,你就无法找到错误日志。你可以搜索“;error"看看你的医生有没有。
否则,通常你会发现一个名为“error_log”的文件;在你的public_html文件中,它记录了所有的PHP错误。
我可以向你保证,我不是唯一一个在沮丧地寻找日志文件时被逼疯过的人。看起来它应该是整个系统中最容易找到的东西。
关于PHP错误日志存储位置的明确指南将是一项复杂的工作。官方的PHP手册甚至没有尝试解决整个主题,因为PHP之外的系统存在依赖关系,例如操作系统(Linux vs. Windows, Linux的哪个发行版),包括Windows和Linux中的设置,这些设置会影响PHP错误日志的名称和位置。
在有人花时间写一份完整的、跨系统的指南之前,你能得到的最好的是你可以查询的大致方向。每个PHP开发人员都不得不忍受这种追求带来的痛苦,只有一个例外。如果你在一个地方工作,信息是在你第一次需要的时候提供的,那么你永远都需要这些信息,也就是说,直到你找到一个新的工作环境。有这么幸运的人。
如果这些信息不是直接提供给你的,也就是说,你还有一些事情要做。在你的职业生涯中,寻找工作不是最漫长的,但也不是最简单的。
从已经发布的许多答案中可以明显看出,一个明智的开始是phpinfo ()的输出。要查看它,创建一个包含以下内容的PHP文件:
<?php phpinfo();
要么浏览到该文件,要么从命令行运行它。如果你两者都做,你可能会发现error_log在不同的地方,这取决于PHP的命令行和web服务器的使用。这是因为在web服务器上运行的PHP解释器与从命令行运行的PHP解释器不同,即使命令行与web服务器在同一台机器上。已经在这里发布的答案大多都做了一个未明说的假设,即PHP是作为web服务器的一部分运行的。
error_log的默认值是没有任何价值
< / >
无论值是什么,它都来自于用于配置PHP的php . ini文件。可以有很多php . ini文件。一开始在它们之间寻找方法是令人困惑的,但是您不需要处理这些来找到您的PHP日志。
如果phpinfo()的输出显示了一个文件的完整路径,那么这就是日志所在的位置。你真幸运。
诀窍在于phpinfo()中通常没有指定完整的路径。当没有完整路径时,位置取决于:
error_log是否为没有任何价值。如果是,日志文件的位置将取决于操作系统和PHP运行的模式。如果PHP作为Apache模块运行,在Linux上,日志通常在/var/log/apache2/error.log中。另一个可能的位置是在您的帐户主目录~ / / error.log日志中的日志目录中。
如果有一个没有路径的文件名,位置取决于文件名是否有值syslog。如果是syslog,那么PHP错误日志将被注入到服务器的syslog日志中,这因Linux发行版而异。一个常见的位置是/var/log/syslog,但它可以是任何地方。在不同的分发版本中,甚至syslog日志的名称也不相同。
如果没有路径的名称不是syslog,则该文件的常见主目录是网站的文档根目录(也就是网站主目录,不要与您帐户的主目录混淆)。
这个小抄在某些情况下是有帮助的,但我很遗憾地承认它并不是万能的。我向你表示哀悼。
你可以在下面看到一个帐户的php错误:
/home/username/logs/domain_tld.php.error.log
可以在全局和本地设置php错误日志。
全局通过WHM:
本地通过cPanel:
主目录将为帐户上配置的所有域、插件和子域设置选项 特定的域将限制更改到该域,或者,在附加域的情况下,附加和匹配的子域
如果启用了PHP-fpm: