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

问题描述 投票:0回答:8

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

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

php logging centos suphp
8个回答
32
投票

您可以使用 lsof 查找系统上打开的日志文件。 lsof 只是为您提供所有打开文件的列表。

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

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

另请参阅这篇有关查找打开的日志文件的文章:在 Linux 系统上查找打开的日志文件


17
投票

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

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

vi /etc/php.ini

修改 error_log 指令:

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

确保 display_errors 设置为关闭(对最终用户来说不会出现错误):

display_errors = Off

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

/etc/init.d/httpd restart

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

修改error_log如下:

error_log = syslog

我们如何查看日志?

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

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

7
投票

这一定会对你有帮助,

启用 PHP 错误日志记录

或者

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

sudo chown $USER:www-data /var/log/php-errors.log

6
投票

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

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


6
投票

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

/usr/local/apache/logs/error_log

观看:

tail -f /usr/local/apache/logs/error_log


3
投票

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


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

ini_get('error_log');

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

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


1
投票

我正在使用 CentOS 6.6Apache,对我来说错误日志文件位于:

/usr/local/apache/log

1
投票

对于 Unix CLI 用户:

很可能是 error_log ini 文件条目未设置。验证:

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

您可以将其设置在您的 php.ini CLI 文件中,或者只是简单地将所有 标准错误 自己快速传输到文件中:

./myprog 2> myerror.log

然后快点:

tail -f myerror.log
© www.soinside.com 2019 - 2024. All rights reserved.