【问题标题】:file_put_contents: failed to open stream: Permission denied how to resolve?file_put_contents:打开流失败:权限被拒绝如何解决?
【发布时间】:2021-01-09 07:43:26
【问题描述】:

我有一个在文件夹中创建的文件

products/pr{date}.csv

使用file_put_contents 此文件是在使用直接调用时创建的,即使用 url

http://website.com/some/product

在这种情况下,文件权限是 apache:apache

一切正常

但在某些情况下,此文件是由 cron 作业创建的

在这种情况下,权限是 ec2-user:apache

但如果文件是由 cron 作业 url 创建的,则其显示错误

file_put_contents(".."): failed to open stream: Permission denied

【问题讨论】:

    标签: php linux permission-denied


    【解决方案1】:

    您应该更改由 cron 作业创建的文件的权限:我假设当前 cron 作业创建的文件的权限为 755,这意味着只有所有者(ec2-user)可以在其上写入(第一个“7”表示所有者写+读+执行,第二个“5”代表用户组读+执行,第三个“5”代表其他用户读+执行)。

    如果 cron 作业创建权限为 775 的文件,它还允许用户组 (apache) 对其进行写入。

    【讨论】:

      【解决方案2】:

      如果您的 Cron 正在从 APACHE 运行 PHP 脚本,那么您需要授予 www-data (APACHE 用户组) 权限以在存储 CSV 文件的文件夹上写入。

      通常 775 权限应该足以让 www-data 写入文件夹。

      【讨论】: