我有一个 php 脚本,用于将文件上传到名为“uploads”的目录。我唯一能让上传正常工作的方法是:
chmod 777 uploads
我知道这不正确,但我不知道该怎么做才能让它发挥作用。
服务器信息:Amazon EC2 上的 T1-Micro Amazon Linux AMI 2013.03
问题:
我如何找出哪些用户需要访问...例如,apache 或 web 服务器的用户名是什么?
我需要授予什么级别的访问权限以及我将使用什么命令来执行此操作。
谢谢!
编辑:我在 stack overflow 上找到了很多答案,我会研究一下。例如
https://stackoverflow.com/questions/3642241/php-file-upload-permissions
https://stackoverflow.com/questions/10842880/setting-permissions-in-php-on-server
谢谢
答案1
尝试运行:
ps -ef | grep apache
并查看最左边对应于 Apache 服务器的列。这是运行 Apache 的用户,并且继承了 PHP。
将上传目录的所有权更改为此用户并稍微限制权限,例如,如果 Web 服务器用户www-data
属于同名组(使用示例路径/var/www/uploads
):
sudo chown www-data:www-data /var/www/uploads
sudo chmod 755 /var/www/uploads
(或您在此实例中想要的任何权限)。我sudo
在示例命令中使用 — 我不知道 EC2 系统在这方面是如何设置的,以获得超级用户权限。
如果您已经上传了文件/目录,您可能还想更改它们的所有权和权限。为此,从777
更合理的权限开始,您可以运行:
sudo chown -R www-data:www-data /var/www/uploads
sudo chmod -R 755 /var/www/uploads
sudo find /var/www/uploads -type f -exec chmod -x {} \;
如果您不了解命令的每个部分,请不要“盲目”运行命令。man
如果有任何不清楚的地方,请查看页面(应该相当简单)。