【问题标题】:Writing Log File Error file_put_contents(/var/www/html/myproject/ulogs/my-log.log): Failed to open stream: Permission denied写入日志文件错误 file_put_contents(/var/www/html/myproject/ulogs/my-log.log):无法打开流:权限被拒绝
【发布时间】:2021-07-03 10:15:59
【问题描述】:

我继承了一个 PHP 应用程序,需要调查各种问题。我不是 PHP 程序员,所以请多多包涵。

我编写了一个将消息记录到自定义日志文件的函数。

<?php
function my_logger($log_msg)
{
error_log("USER INFO:::::",0);
error_log(get_current_user());
error_log(exec('whoami'));
    file_put_contents('/var/www/html/myproject/ulogs/my-log.log', date('G:i:s') . ">>$ " . $log_msg . "\n", FILE_APPEND);

}

在出现大量 500 错误并且没有任何信息后,我发现以下行正在写入 error_log.log

PHP 警告: file_put_contents(/var/www/html/myproject/ulogs/my-log.log):未能 打开流:权限被拒绝 /var/www/html/myproject/app/lib/log_fns.php 在第 11 行

我已经拨打了 get_current_user 和 whoami 的电话,这表明我:

[07-Apr-2021 14:26:04 UTC] USER INFO::::
[07-Apr-2021 14:26:04 UTC] root 
[07-Apr-2021 14:26:04 UTC] apache

我现在从一个名为 http:///test_log.php 的简单 php 页面调用它:

<?php

require("/var/www/html/myproject/app/lib/log_fns.php");

//phpinfo();

my_logger("This is a test message from test_log.php");

?>

我尝试将文件 chmod 到 ./lib 目录中的 777,但仍然收到此错误。我已经硬编码了您在上面创建 ulogs 目录时可以看到的路径。

我尝试过将 ulogs 目录 chmod 到 777 并将目录 chown 到 apache:apache 的组合,但仍然出现此错误。

有什么想法可以让我看看下一步或如何解决?

TIA

【问题讨论】:

    标签: php apache


    【解决方案1】:

    运行此命令

    sudo chmod 777 /var/www/html/myproject/ulogs/
    

    通过这项工作,您file_put_contents 可以在此目录中生成或编辑文件

    【讨论】:

      猜你喜欢
      • 2011-06-22
      • 2014-11-29
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 2014-06-25
      • 2018-04-25
      • 2022-09-22
      相关资源
      最近更新 更多