0

我正在通过 Amazon AWS 托管一个 LAMP EC2 实例。

我网站的一部分允许用户上传文件。不幸的是,服务器无法在“上传”文件夹中存储永久副本,因为它缺少必要的权限。

调用一个 PHP 脚本,它将文件存储到“上传”文件夹。当上传文件夹具有标准755775权限时,上传将失败。但是,当我将文件夹权限更改为777(世界权限)时,它可以工作。

出于显而易见的原因,我不想使用777世界权限。我怎样才能使服务器有权将文件写入“上传”文件夹?

多谢你们。

4

1 回答 1

0

这可能是上传文件夹的所有权问题。
可以通过以下命令检查文件夹的所有权

     ls -l
     样本输出:
    -rw-r--r-- 1 root root 0 8 月 31 日 05:48 demo.txt
. 在这里可以看出文件的用户是root,文件的组是root。
在目录中执行此命令将显示该文件夹中所有文件和文件夹的权限和所有权。
现在使用 LAMP 堆栈,您需要确保所有权属于
Apache 用户,即 www-data 和 Apache Group 再次为 www-data。这可以通过进入应用程序的根文件夹并执行命令来完成

chown -R www-data:www-data
     样本输出:
    -rw-r--r-- 1 www-data www-data 0 8 月 31 日 05:48 demo.txt

这将递归地将根目录中所有文件和文件夹的所有权更改为 Apache 用户和组。
此问题的常见原因是当您下载了包或文件时,您显然是以本地或 root 用户身份完成的,而 Apache 没有权限执行此操作。或者您手动创建了一个目录。
这是解决问题的基本思路,您也可能只想考虑执行此命令并仅更改“上传”目录的所有权。

于 2014-10-04T18:55:21.990 回答