【问题标题】:How can a PHP application log errors to a custom file in the: /var/log/httpd/ directory?PHP 应用程序如何将错误记录到 /var/log/httpd/ 目录中的自定义文件中?
【发布时间】:2017-01-28 21:12:14
【问题描述】:

我正在尝试将特定的 PHP 脚本/应用程序输出到 CentOS7 上的以下日志文​​件:

/var/log/httpd/custom_error.log

我已经为此寻找不同的解决方案,但this SO question 是我见过的唯一最接近的答案,但仍然不成功。

由于我有多个 PHP 框架/应用程序正在运行(WordPress、Drupal 等),我使用 PHP 的基于脚本的覆盖,每个脚本进程分别使用自己的覆盖。例如,以下内容不起作用:

ini_set('error_log', '/var/log/httpd/wp_error.log' );

该 wp_error.log 文件的所有权和权限设置为 apache:apache 644。

相比之下,当我有以下情况时,这会成功:

ini_set('error_log', '/var/www/wordpress/wp_error.log' );

或者:

ini_set('error_log', '/var/www/drupal/dru_error.log' );

【问题讨论】:

  • 您愿意告诉我们如何您尝试实现这一目标吗?
  • 有一个php的配置设置:error_log。我建议你修改它?
  • 也许你应该看看php.ini,里面有一个指令叫做error_log =
  • apache:apache 644 仅在您的 apache 在 apache 帐户下运行时才有效。这是它运行的帐户吗?
  • 如果这些不同的案例真的来自同一个系统,那么显然你错过了一些东西。三重检查文件路径、名称、权限,尤其是从文件系统根目录到日志文件的所有文件夹的权限。然后,当你这样做时,坐下来真的检查所有这些。

标签: php logging


【解决方案1】:

为了解决我的问题,我需要将路径 /var/log/httpd/ 中父 httpd 文件夹的所有权更改为 apache:apache 用户/组:

sudo touch /var/log/httpd/custom.log
sudo chown -R apache:apache /var/log/httpd

如果我错了,请纠正我,但我的研究使我相信 Apache 将其相关日志输出到 root 拥有的 syslog,然后将日志写入该文件夹。

但是,如果我将所有权更改为 Apache,root 仍然可以写入这些日志文件,但现在 Apache 及其相关进程(例如 PHP)也可以直接写入该日志文件夹。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-12
    • 1970-01-01
    • 2018-07-19
    • 2013-05-23
    • 2021-03-02
    • 2015-02-13
    • 2015-12-21
    相关资源
    最近更新 更多