提问人:PHPLOVER 提问时间:2/26/2011 最后编辑:Peter MortensenPHPLOVER 更新时间:9/30/2023 访问量:1238690
PHP 将错误日志存储在哪里?(PHP 5、Apache、FastCGI 和 cPanel)
Where does PHP store the error log? (PHP 5, Apache, FastCGI, and cPanel)
问:
我在共享主机上,有 cPanel、Apache 和 PHP 由 FastCGI 运行。PHP 将错误日志存储在哪里?
有没有另一种方法可以在共享托管环境中找到错误日志,而不必遍历整个站点结构来查找error_log文件?
我可以访问php .ini文件(我使用的是PHP版本5.2.16)。
答:
尝试并检查“error_log”phpinfo()
评论
echo ini_get('error_log');
error_reporting(E_ALL|E_STRICT);
在 php.ini 文件中设置变量时error_log应使用绝对路径,否则错误日志将根据您的相对路径存储。
error_log = /var/log/php.errors
其他解决方案是编写简单的脚本,该脚本将列出目录树中的所有错误日志文件。
如果 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(); ?>
评论
/usr/local/apache/logs/error_log
<?php phpinfo(); ?>
php -a
)
在 php.ini 中配置错误日志文件时,可以使用绝对路径或相对路径。将根据生成脚本的位置解析相对路径,并且您将在包含脚本的每个目录中获得一个日志文件。如果希望所有错误消息都转到同一文件,请使用该文件的绝对路径。
有关详细信息,请参阅错误处理函数。
评论
在LAMP环境中,PHP错误默认定向到以下文件。
/var/log/httpd/error_log
所有访问日志都属于:
/var/log/httpd/access_log
评论
/var/log/apache2/error.log
/var/log/httpd-error.log
如果您从源代码构建了 Apache 和 PHP,那么默认情况下,错误日志会在您的 ,即通常 .${Apache install dir}/logs/error_log
/usr/local/apache2/logs/error_log
否则,如果您已从存储库中安装了它,则可以在 中找到它。/var/log/apache2/error_log
您也可以在 also 中设置路径,并通过调用 来验证它。php.ini
phpinfo()
如何在 Linux 上查找 PHP 错误日志:
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 文件,看看默认值是什么。它也可能被您的特定虚拟主机覆盖。我首先查看或搜索error_log。它可以列为 /var/log/httpd/error_log 或 ,但也可以简单地列为 。/etc/httpd/conf/httpd.conf
/etc/apache2/httpd.conf
/var/log/apache2/error_log
logs/error_log
在这种情况下,它是一个相对路径,这意味着它将位于 .如果仍然找不到它,请检查 httpd.conf 文件的底部,看看虚拟主机的包含位置。它可能在 /etc/httpd/conf.d/ <- 中作为“其他”或“额外”。然后,您的虚拟主机可以使用 ErrorLog “/path/to/error_log” 覆盖它。/etc/httpd/logs/error_log
无论您希望在何处,如果您在函数调用中设置它:
error_log($errorMessageforLog . "\n", 4, 'somePath/SomeFileName.som');
默认情况下,PHP 似乎不会在任何地方记录错误。php.ini 中的密钥在我见过的所有安装中都被注释掉了。error_log
一般我:
查找 php.ini 文件。.
locate php.ini
在这些文件中搜索值;
error_reporting
它应该设置为任何PHP日志级别的合并对你来说就足够了。
例如:
E_ALL & ~E_DEPRECATED & ~E_STRICT
检查该值以确保它指向实际地点并且未被注释掉。
error_log
默认值没有给出完整路径,只给出文件名,我不知道这个路径通常解析到哪里。可能。
/var/log/
如果您在 Google Compute Engine 中,也可以是这样。/var/log/apache2/error.log
你可以这样查看尾巴:
tail -f /var/log/apache2/error.log
评论
Linux操作系统
php --info | grep error
终端将输出错误日志位置。
窗户
php --info | findstr /r /c:"error_log"
命令提示符将输出错误日志位置。
设置日志位置
打开 your 并添加以下行:php.ini
error_log = /log/myCustomLog.log
感谢 chelmertz 和 Boom 的这些(对问题的评论)。
评论
php -info
php
php.ini
error_reporting
E_ALL & ~E_DEPRECATED & ~E_STRICT
error_log
php --info | grep log
sudo /etc/init.d/apache2 restart
NGINX 通常将其存储在 /var/log/nginx/error.log 或 access.log(无论如何在 Ubuntu 上)。
通过在命令行上运行来搜索 httpd.conf 文件。例如:ErrorLog
cat <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"
找到开头的那一行,就有了你的答案。ErrorLog
注: 对于虚拟主机,您可以编辑虚拟主机文件以指定不同的日志文件位置。httpd-vhosts.conf
WordPress的
WordPress 会将消息定向到 when 设置为 true。error_log()
/wp-content/debug.log
WP_DEBUG_LOG
请参阅 WordPress 文档了解WP_DEBUG_LOG
评论
.htaccess
php_value error_log /var/www/pmortensen.eu/phperrors.log
php --info | grep error
这很有帮助。
评论
# error_log => no value => no value
- 您可以进入文件管理器并检查日志文件夹。
- 检查public_html文件夹中的日志文件。
- 检查“php phpinfo()”文件以了解日志的存储位置。
评论
cPanel 错误日志位于:
/usr/local/cpanel/logs/
/usr/local/apache/logs/
默认情况下,Apache 日志位于以下位置:
- /var/log/apache
或
- /var/log/apache2
如果有人正在使用自定义日志位置,则可以通过运行以下命令来检查它:
cat /etc/apache2/**conf**/httpd.conf | grep ErrorLog
如果您收到 apache2 目录不存在的错误,则可以通过以下方式运行此命令以查找正确的位置:
whereis apache
或
whereis apache2
您位于共享环境中,找不到错误日志。始终检查cPanel在cPanel仪表板中是否有“错误”选项。如果您无法找到错误日志,则可以在那里找到它。
在cPanel搜索栏中,搜索“错误”,它将显示“错误页面”,这些页面基本上是不同HTTP错误页面的列表,而其他“错误”是显示错误日志的位置。
在共享环境中要查看的其他位置:
- /home/yourusername/logs
- /首页/您的用户名/public_html/error_log
评论
像这样的东西:
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
在共享的cPanel环境中,如果您的托管服务提供商在cPanel仪表板中未提供任何选项,则找不到错误日志。您可以搜索“错误”,看看您的提供商是否有任何错误。
否则,通常您会在public_html文件中找到一个名为“error_log”的文件,其中记录了所有PHP错误。
评论
我可以向你保证,我不是唯一一个在令人沮丧的日志文件搜索中至少被逼疯一次的人。似乎它应该是整个系统中最容易找到的东西。
关于PHP错误日志存储位置的权威指南将是一项复杂的工作。官方的PHP手册甚至没有试图解决整个主题,因为存在对PHP以外的系统的依赖,例如操作系统(Linux与Windows,Linux的发行版),包括Windows和Linux中的设置,这些设置会影响PHP错误日志的名称和位置。
除非有人花时间写一份完整的跨系统指南,否则你得到的最好的就是你可以查询的一般方向。每个PHP开发人员都不得不忍受这种追求的痛苦,但有一个例外。如果你在一个地方工作,并且在你第一次需要信息时提供信息,那么你就永远拥有信息需求,也就是说,直到你发现自己处于一个新的工作环境。有这样幸运的人。
如果信息没有在银盘上给你,可以这么说,你有一些狩猎要做。狩猎不是你职业生涯中最长的一次,但也不是最简单的。
从已经发布的许多答案中可以明显看出,一个明智的起点是 phpinfo() 的输出。要查看它,请创建一个包含以下内容的 PHP 文件:
<?php
phpinfo();
浏览到该文件或从命令行运行它。如果两者都这样做,您可能会发现error_log位于不同的地方,具体取决于命令行和 Web 服务器对 PHP 的使用。这是因为在 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中。另一个可能的位置是帐户主目录的日志目录 ~/logs/error.log。
如果存在没有路径的文件名,则位置取决于文件名是否具有值 syslog。如果是 syslog,则 PHP 错误日志将注入到服务器的 syslog 中,该日志因 Linux 发行版而异。一个常见的位置是 /var/log/syslog,但它可以位于任何地方。甚至系统日志的名称也因发行版而异。
如果没有路径的名称不是 syslog,则该文件的常用主页是网站的文档根目录(又名网站主目录,不要与您帐户的主目录混淆)。
这个备忘单在某些情况下很有帮助,但我很遗憾不得不承认它几乎不是普遍的。你有我的哀悼。
您可以在以下位置查看帐户的 php 错误:
/home/username/logs/domain_tld.php.error.log
您可以在全局和本地设置php错误日志。
通过WHM在全球范围内:
- WHM -->> MultiPHP INI 编辑器 --> “编辑器模式”
- 选择要设置错误日志的 PHP 版本
- 编辑参数error_log。 error_log = “/some/path” 将文件名更改为所需的错误日志文件
- 保存更改
在本地,通过cPanel:
- CPanel -->> MultiPHP INI 编辑器 --> “编辑器模式”
- 选择要设置错误日志的 PHP 版本
- 编辑参数error_log。 error_log = “/some/path”
- 将文件名更改为所需的错误日志文件
主目录将为帐户上配置的所有域、插件和子域设置选项 特定域将限制对该域的更改,或者,如果是插件域,则限制插件和匹配的子域
- 保存更改
如果启用了 PHP-fpm:
- WHM --> MultiPHP 管理器
- 找到要更改其错误日志位置的域
- 点击“编辑 PHP-FPM”
- 更改“错误日志文件 (error_log)”中相对于用户主目录中文件夹“logs”的日志位置
- 保存更改
如果您使用的是 Ngnix,则应该将文件位于目录中。error.log
var/log/ngnix/
当PHP在具有Apache和FastCGI的服务器上运行时,特别是在cPanel等环境中,PHP错误日志的位置可能取决于服务器的配置。但是,我可以为您提供一些常见的位置,您可以在其中找到错误日志:
php.ini 配置:
PHP 的主要配置文件 php.ini 有一个称为 error_log 的指令,用于确定应记录错误的位置。您可以在 php .ini 文件中搜索此指令,以查看日志的存储位置。它可能看起来像这样:
error_log = /path/to/your/php-error.log
Apache 日志:
如果PHP设置为将错误记录到Apache的错误日志中,您可能会在那里找到PHP错误。常见位置包括:
/var/log/httpd/error_log(适用于某些通用 Linux 发行版)
/var/log/apache2/error.log (适用于 Debian/Ubuntu)
/var/log/apache/error_log(适用于其他发行版)
特定于 cPanel 的日志:
在装有 cPanel 的服务器上:
PHP 错误可能会记录到用户的主目录中,例如
/home/username/public_html/error_log。
cPanel 有一个“错误”部分,您可以在其中查看最近 300 条错误日志消息。访问 cPanel 并导航到此部分可能会让您在不访问服务器的文件系统的情况下获得直接见解。
快速CGI:
根据 FastCGI 的设置方式,它可能有自己的错误日志,独立于 Apache。检查 FastCGI 配置文件以查看是否设置了任何特定的错误日志路径。
自定义日志位置:
在某些情况下,开发人员或系统管理员可以在应用程序代码中(使用 PHP 中的 error_log() 函数)或在服务器级别指定自定义日志位置。
如何找到php.ini:
要查找 PHP 安装正在使用的 php.ini 文件: 创建一个包含以下内容的 PHP 文件(例如 phpinfo.php):
<?php
phpinfo();
?>
在 Web 浏览器中导航到此文件。这将显示有关PHP设置的大量信息。
查找“加载的配置文件”部分,它将告诉您正在使用哪个 php.ini 文件。此文件将包含前面提到的 error_log 指令。
永远记得之后删除或保护phpinfo.php文件,因为它可能会暴露有关服务器配置的敏感信息。
我正在将 php 与 cpanel 一起使用,我发现错误日志是在与生成错误的 php 脚本相同的文件夹中创建的。因此,我做了一个 cron 作业来每天运行,
/usr/bin/php -q /home/mysite/cron.php
使用以下 PHP:
$errors="";
foreach(explode("\n",shell_exec('find . -name error_log')) as $file)
$errors.=$file.":\n".file_get_contents($file)."\n\n\n";
if(empty($errors)) exit(0);
mail("[email protected]","php error_log",$errors);
它将每天搜索错误日志,如果找到,则通过电子邮件将其文件名和内容发送给我。
评论
/var/log/httpd/error_log
/var/log/apache2/error.log
sudo
php --info | grep error
php --info | findstr /r /c:"error_log"