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

PHP*_*VER 375 php error-handling

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

有没有其他方法可以在共享主机环境中找到错误日志,而不必通过整个站点结构来查找error_log文件?

我可以访问php.ini(我使用的是PHP版本5.2.16).

Ada*_*old 299

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

error_log = /var/log/php-scripts.log
Run Code Online (Sandbox Code Playgroud)

根据rinogo的评论:如果你正在使用cPanel,你可能正在寻找的主日志文件存储(默认情况下)

/usr/local/apache/logs/error_log
Run Code Online (Sandbox Code Playgroud)

如果所有其他方法都失败,您可以使用检查日志文件的位置

<?php phpinfo(); ?>
Run Code Online (Sandbox Code Playgroud)

  • 仅供Google员工使用 - 如果您正在使用cPanel,您可能正在寻找的主日志文件(默认情况下)存储在`/ usr/local/apache/logs/error_log`中 (28认同)
  • "Php将错误日志存储在/ var/log/apache2中,如果php是apache2",则不在RHEL等上,其中包的名称为"httpd".人们真的不能假设包的名称在发行版中是一致的. (20认同)
  • 但检查`<?php phpinfo()的'error_log'部分; ?>`确认路径 (5认同)
  • 它会在phpinfo部分显示出来吗?在error_log中,我看到的key/value是'error_log'并且没有实际路径 (2认同)

che*_*rtz 84

尝试phpinfo()并检查"error_log"

  • 它只是说**error_log**没有指定路径.我想这可能是因为它是在共享主机环境中,如果我们有权访问它,我们会看到每个人都有网站错误. (10认同)
  • 如果你尝试`echo ini_get('error_log'),那么@PHPLOVER会说同样的事情;`? (8认同)
  • 我也说错误日志,不知道在哪里寻找它.这在谷歌上打了一个但没有回答. (3认同)
  • @PHPLOVER:您可以使用设置`error_reporting(E_ALL | E_STRICT);`http://se.php.net/manual/en/function.error-reporting.php轻松控制报告级别 (2认同)

Cul*_*lub 47

Linux的

php --info | grep error 
Run Code Online (Sandbox Code Playgroud)

终端将输出错误日志位置.

视窗

php --info | findstr /r /c:"error_log"
Run Code Online (Sandbox Code Playgroud)

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

设置日志位置

打开php.ini并添加以下行:

error_log = /log/myCustomLog.log
Run Code Online (Sandbox Code Playgroud)

感谢@chelmertez,@ Bob这些(对问题的评论).

  • 我在linux上.这没有提到我的日志位置. (4认同)

小智 31

在LAMP环境中,php错误默认指向此文件下方.

/var/log/httpd/error_log
Run Code Online (Sandbox Code Playgroud)

所有访问日志都包含在:

/var/log/httpd/access_log
Run Code Online (Sandbox Code Playgroud)

  • +1代表:CentOS 5.10,Apache 2.2,WHM 11.40. (8认同)

Eri*_*ski 16

如何在Linux上找到PHP错误日志:

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

/var/log/httpd/error_log
Run Code Online (Sandbox Code Playgroud)

另一种等效方式:

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

/var/log/httpd/error_log
Run Code Online (Sandbox Code Playgroud)


mai*_*ilo 11

在php.ini文件中设置error_log变量时应该使用绝对路径,否则,将根据您的相对路径存储错误日志.

error_log = /var/log/php.errors
Run Code Online (Sandbox Code Playgroud)

其他解决方案是编写简单的脚本,列出目录树中的所有错误日志文件.


Tho*_*ner 11

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

一般我:

  1. 寻找php.ini文件.locate php.ini.
  2. 在这些文件中搜索该error_reporting值;

    哪个应该设置为php日志级别的任何合并都足够你.,

    例如: E_ALL & ~E_DEPRECATED & ~E_STRICT

  3. 检查error_log值以确保它指向实际位置并且未注释掉.

    默认值不提供完整路径,只提供文件名,我不知道此路径正常解析的位置.可能/var/log/.


Viv*_*vek 10

它也可能/var/log/apache2/error.log是你在谷歌计算引擎.

你可以像这样查看尾巴:

tail -f /var/log/apache2/error.log
Run Code Online (Sandbox Code Playgroud)


J4G*_*NGH 7

php --info | grep error
Run Code Online (Sandbox Code Playgroud)

这很有帮助。sjas 对问题发表评论。所以我把它作为答案。

  • (似乎)这会输出 PHP 命令行设置(例如 /etc/php/7.1/cli/php.ini)而不是 Apache 设置的值。 (3认同)
  • 在 PHP 7.4 版本中,我看到: `# error_log =&gt; no value =&gt; no value` 我不知道这是否意味着没有写入任何内容,或者是否使用了某些默认目标路径。 (3认同)

Dar*_*ron 6

NGINX 通常将其存储在 /var/log/nginx/error.log 或 access.log 中。(无论如何在 Ubuntu 上)


Abh*_*hek 5

如果你从源代码编译Apache和PHP,则默认错误日志在你的生成${Apache install dir}/logs/error_log,即一般/usr/local/apache2/logs/error_log.否则,如果您已从存储库安装它,您将在其中找到它./var/log/apache2/error_log您可以在您的路径中设置路径php.ini并通过调用进行验证phpinfo().


Tho*_*ett 5

最好的方法是查看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/logs/error_log.如果仍然找不到它,请检查httpd.conf文件的底部并查看虚拟主机的包含位置.它可能在/etc/httpd/conf.d/<-中作为"其他"或"额外".您的虚拟主机可以使用ErrorLog"/ path/to/error_log"覆盖它.