我正在通过 Amazon AWS 托管一个 LAMP EC2 实例。
我网站的一部分允许用户上传文件。不幸的是,服务器无法在“上传”文件夹中存储永久副本,因为它缺少必要的权限。
调用一个 PHP 脚本,它将文件存储到“上传”文件夹。当上传文件夹具有标准755
和775
权限时,上传将失败。但是,当我将文件夹权限更改为777
(世界权限)时,它可以工作。
出于显而易见的原因,我不想使用777
世界权限。我怎样才能使服务器有权将文件写入“上传”文件夹?
多谢你们。
我正在通过 Amazon AWS 托管一个 LAMP EC2 实例。
我网站的一部分允许用户上传文件。不幸的是,服务器无法在“上传”文件夹中存储永久副本,因为它缺少必要的权限。
调用一个 PHP 脚本,它将文件存储到“上传”文件夹。当上传文件夹具有标准755
和775
权限时,上传将失败。但是,当我将文件夹权限更改为777
(世界权限)时,它可以工作。
出于显而易见的原因,我不想使用777
世界权限。我怎样才能使服务器有权将文件写入“上传”文件夹?
多谢你们。
这可能是上传文件夹的所有权问题。
可以通过以下命令检查文件夹的所有权
ls -l 样本输出: -rw-r--r-- 1 root root 0 8 月 31 日 05:48 demo.txt. 在这里可以看出文件的用户是root,文件的组是root。
chown -R www-data:www-data 样本输出: -rw-r--r-- 1 www-data www-data 0 8 月 31 日 05:48 demo.txt
这将递归地将根目录中所有文件和文件夹的所有权更改为 Apache 用户和组。
此问题的常见原因是当您下载了包或文件时,您显然是以本地或 root 用户身份完成的,而 Apache 没有权限执行此操作。或者您手动创建了一个目录。
这是解决问题的基本思路,您也可能只想考虑执行此命令并仅更改“上传”目录的所有权。