【问题标题】:Find out the error_log's path找出error_log的路径
【发布时间】:2012-02-15 20:16:44
【问题描述】:

我有这个domain.com 指向/home/username/public_html/domain.com

我将这些行添加到 .htaccess 文件中:

ErrorDocument 500 /oohps.php
ErrorDocument 404 /where.php

所以我可以展示一些样式模板。

问题是当我试图访问一个不存在的页面时,我得到一个额外的内部服务器错误,所以这些文件没有打开。

我想检查日志,但在该路径 (/home/username/public_html/domain.com) 中找不到错误日志。

我在/var/log/httpd找到了一个,但我认为它不是正确的文件夹,因为有很多错误与此页面无关,我没有看到任何涉及。

是否有一个 PHP 函数可以输出错误日志文件路径

【问题讨论】:

标签: php apache


【解决方案1】:

内部服务器错误通常与 Apache/var/log/httpd/ 是 Apache 的错误日志文件有关,所以我认为您在正确的文件中。


错误路径在php.ini中设置。要获取路径,请使用ini_get():

<?php
  $errorPath = ini_get('error_log');
?>

【讨论】:

  • Re "/var/log/httpd/是Apache的错误日志文件":那不是目录/文件夹,不是文件吗? (Apache 错误日志文件也可能是/var/log/apache2/error.log。)
【解决方案2】:

要仅获取 PHP 存储其日志的路径,请使用:

pathinfo(ini_get('error_log'),PATHINFO_DIRNAME);

应该返回这样的东西(在本地主机上):

/Applications/MAMP/logs

【讨论】:

  • 只是好奇,为什么不只是dirname(ini_get('error_log')),只是想知道是否有区别
【解决方案3】:

检查文件php.ini(或函数phpinfo()的输出)中的error_log设置。

【讨论】:

    【解决方案4】:

    当我偶然发现这个问题并且 ini_get() 没有帮助时,以下可能也是其他人的解决方案。

    如果 error_log 未在文件 php.ini 等中设置,则将错误发送到SAPI 错误记录器。这在例如的情况下Apache 2 是在 Apache vhost 配置中定义的错误日志。获取 Apache 日志目录的一种方法是检查标准错误文件描述符的符号链接值。

    适用于 Linux 的示例如下:

    $logdir = pathinfo(realpath("/proc/".getmypid()."/fd/2"), PATHINFO_DIRNAME);
    

    本例读取/proc/[PID]/fd/2的符号链接文件的路径,即标准错误文件描述符。

    【讨论】:

    • 这是否适用于共享主机,减少了权限?还是因为它们不允许获取 pid 而返回错误?
    • 我不确定。但是您可以使用 php.ini 配置禁用 php 函数是正确的,因此某些主机也可能禁用 getmypid()。所以我认为正确的答案是:这取决于主机 - 试一试。
    【解决方案5】:

    我不知道有这样的功能,但也许phpinfo() 会有一些关于它的信息。

    日志路径在 Apache 站点的配置文件中定义。如果你想要一个自定义路径,如果不是默认情况下,所有的日志都加载到/var/log/apache2/*.log,所以PHP与它无关。

    【讨论】:

      【解决方案6】:

      Windows 和 Linux 上的所有日志路径:

      /etc/httpd/logs/access.log

      /etc/httpd/logs/access_log

      /etc/httpd/logs/error.log

      /etc/httpd/logs/error_log

      /opt/lampp/logs/access_log

      /opt/lampp/logs/error_log /usr/local/apache/log

      /usr/local/apache/日志

      /usr/local/apache/logs/access.log

      /usr/local/apache/logs/access_log

      /usr/local/apache/logs/error.log

      /usr/local/apache/logs/error_log

      /usr/local/etc/httpd/logs/access_log

      /usr/local/etc/httpd/logs/error_log

      /usr/local/www/logs/thttpd_log

      /var/apache/logs/access_log

      /var/apache/logs/error_log

      /var/log/apache/access.log

      /var/log/apache/error.log

      /var/log/apache-ssl/access.log

      /var/log/apache-ssl/error.log

      /var/log/httpd/access_log

      /var/log/httpd/error_log

      /var/log/httpsd/ssl.access_log

      /var/log/httpsd/ssl_log

      /var/log/thttpd_log

      /var/www/log/access_log

      /var/www/log/error_log

      /var/www/logs/access.log

      /var/www/logs/access_log

      /var/www/logs/error.log

      /var/www/logs/error_log

      C:\apache\logs\access.log

      C:\apache\logs\error.log

      C:\Program Files\Apache Group\Apache\logs\access.log

      C:\Program Files\Apache Group\Apache\logs\error.log

      C:\程序文件\wamp\apache2\logs

      C:\wamp\apache2\logs

      C:\wamp\logs

      C:\xampp\apache\logs\access.log

      C:\xampp\apache\logs\error.log

      【讨论】:

      • 我认为这不能回答问题,因为它只提供 posible 路径。该问题专门询问 当前路径
      • 这是位置 access_log 和 error_log 你的路径 error_log 错误
      • 再次,我需要当前值,而不是所有(或部分)可能值
      • 你的 htaccess 问题
      • 你的标题问题没有找到路径所以你检查这个路径来找到正确的路径
      猜你喜欢
      • 2012-07-05
      • 2017-08-25
      • 1970-01-01
      • 2019-06-27
      • 2011-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多