在哪里可以找到错误日志文件?
我需要检查它们以解决安装suPHP后显示的内部服务器错误。
您可以使用lsof在系统上查找打开的日志文件。lsof 只是为您提供所有打开文件的列表。
对“log”使用grep ...再次对“php”使用grep(如果文件名包含字符串“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 系统上查找打开的日志文件
这个对我有用。我们如何将所有 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
这取决于您使用的操作系统和网络服务器。
在 Linux 和 Apache 上,您可以在文件夹/var/log/apache2/中找到 Apache error_log。
我正在使用带有Apache的CentOS 6.6,对我来说,错误日志文件位于:
/usr/local/apache/log
这绝对会帮助你,
或者
在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
对于 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
在大多数用例中,这是一个更可取的答案,因为它允许您将软件的执行与服务器平台的直接知识分离,从而使您的代码更具可移植性。如果您正在执行大量cron或CGI,这可能没有直接帮助,但可以在 Web 运行时将其设置为 cron 和 CGI 脚本从中提取的配置,以在这种情况下保持日志位置一致。
您可以在运行时在任何平台上获取本地分配给 PHP 的当前日志文件,方法是使用:
ini_get('error_log');
这将返回由 Web 服务器直接分发到 PHP 二进制文件的值,这在 90% 的用例中都是您想要的(明显的例外是 CGI)。CGI 通常会登录到与 HTTP Web 服务器客户端相同的位置,但并非总是如此。
您还需要在提交任何内容之前检查它是否可写以避免错误。定义其位置的配置文件(通常是全局文件apache.conf或基于每个域的vhosts.conf),但配置不确保文件权限允许在运行时进行写访问。