【问题标题】:Where can I find error log files for PHP?在哪里可以找到 PHP 的错误日志文件?
【发布时间】:2012-10-01 19:46:21
【问题描述】:

在哪里可以找到错误日志文件?

我需要检查它们以解决安装 suPHP 后显示的内部服务器错误。

【问题讨论】:

  • 这取决于您的日志记录设置 :) CO
  • 我的服务器是 centos 但在 var/log/httpd 下没有显示任何内容
  • 检查 error_log 路径是否在 php.ini 中设置。如果未设置,通常会记录在 Web 服务器的错误日志中。
  • php.ini中寻找error_log,如果你使用php-fpm,你可能还想在php-fpm conf文件中检查error_log
  • 这是一个超级常见问题解答。规范问题的候选人:Where does PHP store the error log? (php5, apache, fastcgi, cpanel)。标题有些具体,但答案肯定不是(不是全部)。

标签: php logging centos suphp


【解决方案1】:

您可以使用lsof 在您的系统上查找打开的日志文件。 lsof 只是给你一个所有打开文件的列表。

使用grep 表示“log” ...再次使用grep 表示“php”(如果文件名包含字符串“log”和“php”,如“php_error_log”中的字符串,并且您是根用户会在不知道配置的情况下找到文件)。

lsof | grep log

... snip
gmain     12148 12274       user   13r      REG              252,1    32768     661814 /home/user/.local/share/gvfs-metadata/home-11ab0393.log
gmain     12148 12274       user   21r      REG              252,1    32768     662622 /home/user/.local/share/gvfs-metadata/root-56222fe2.log
gvfs-udis 12246             user  mem       REG              252,1    55384     790567 /lib/x86_64-linux-gnu/libsystemd-login.so.0.7.1
==> apache 12333             user  mem       REG              252,1    55384     790367 /var/log/http/php_error_log**
        ... snip
lsof | grep log | grep php

**apache 12333             user  mem       REG              252,1    55384     790367 /var/log/http/php_error_log**
... snip

另请参阅这篇关于查找打开的日志文件的文章:Find open logfiles on a Linux system

【讨论】:

    【解决方案2】:

    它对我有用。我们如何将所有 PHP 错误记录到日志文件中?

    只需将以下行添加到文件 /etc/php.ini 以将错误记录到指定文件 - 文件 /var/log/php-scripts.log

    vi /etc/php.ini
    

    修改error_log指令:

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

    确保 display_errors 设置为 Off(对最终用户没有错误):

    display_errors = Off
    

    保存并关闭文件。重启网络服务器:

    /etc/init.d/httpd restart
    

    如何将错误记录到 syslog 或 Windows Server 事件日志?

    修改error_log如下:

    error_log = syslog
    

    我们如何查看日志?

    使用 ssh 登录或使用 SFTP 下载日志文件 /var/log/php-scripts.log:

    sudo tail -f /var/log/php-scripts.log
    

    【讨论】:

    • 我为什么要确保 display_errors 是关闭的?当然这不应该影响错误记录,是吗?
    • 如答案中所述,display_errors 确定错误是否显示给最终用户(例如在呈现的网页上),所以不,它不会影响记录。 php.net/manual/en/…
    • xammpp 的 php.ini 中没有 error_log。我在哪里可以找到这个?
    【解决方案3】:

    在安装了cPanelCentOS 上,我的日志位于:

    /usr/local/apache/logs/error_log
    

    观看:tail -f /usr/local/apache/logs/error_log

    【讨论】:

      【解决方案4】:

      这取决于您使用的操作系统和网络服务器。

      在 Linux 和 Apache 上,您可以在文件夹 /var/log/apache2/ 中找到 Apache error_log

      【讨论】:

      • /var/log 下没有任何名为 apache2 或 apache 的文件夹或文件。我的服务器是centos - apache
      • 在 /var/log/httpd 下?您可以在 apache.conf 文件中配置 apache 的日志位置。这应该位于 /etc/httpd/ 的某个位置
      【解决方案5】:

      我将 CentOS 6.6Apache 一起使用,对我来说,错误日志文件位于:

      /usr/local/apache/log
      

      【讨论】:

      • Linux 上的某些LAMP 安装可能使用/var/log/apache2/error.log
      【解决方案6】:

      在大多数用例中,这是一个更可取的答案,因为它允许您将软件的执行与服务器平台的直接知识分离,从而使您的代码更具可移植性。如果您正在执行大量 cronCGI,这可能没有直接帮助,但可以在 Web 运行时将其设置为 cron 和 CGI​​ 脚本的配置在这种情况下拉取以保持日志位置一致。


      您可以在运行时在任何平台上获取本地分配给 PHP 的当前日志文件,方法是:

      ini_get('error_log');
      

      这会返回由 Web 服务器直接分发到 PHP 二进制文件的值,这在 90% 的用例中都是您想要的(明显的例外是 CGI)。 CGI 通常会登录到与 HTTP Web 服务器客户端相同的位置,但并非总是如此。

      您还需要在提交任何内容之前检查它是否可写以避免错误。定义其位置的配置文件(通常是全局文件 apache.conf 或基于每个域的 vhosts.conf),但配置不确保文件权限在运行时允许写访问。

      【讨论】:

        【解决方案7】:

        这绝对会帮助你,

        Enable PHP error logging

        或者

        php.ini 中(vim /etc/php.ini sudo vim /usr/local/etc/php/7.1/php.ini

        display_errors = Off
        
        log_errors = On
        
        error_log = /var/log/php-errors.log
        

        制作日志文件,用户可写www-data

        sudo touch /var/log/php-errors.log
        
        /var/log/php-errors.log
        
        sudo chown <owner>:www
        

        【讨论】:

          【解决方案8】:

          Unix CLI 用户

          很可能 error_log ini 文件条目没有设置。验证:

          php -i | grep error_log
          // error_log => no value => no value
          

          您可以在 php.ini CLI 文件中设置它,或者只是简单地将所有 standard error 自己快速传送到一个文件中:

          ./myprog 2> myerror.log
          

          那么快:

          tail -f myerror.log
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-11-11
            • 2014-09-13
            • 1970-01-01
            • 2021-12-06
            • 1970-01-01
            • 2010-10-03
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多