move_uploaded文件:无法打开流:/srv/http/upload.php中的权限被拒绝

时间:2017-01-11 17:17:24

标签: php linux apache server archlinux

我正在尝试在ArchLinux上运行服务器,我有apache和PHP正常运行,但我无法使用PHP上传文件。我在Stackoverflow上看到过很多类似的问题,我似乎已经使用了我找到的所有建议,但我仍然得到了

failed to open stream: Permission denied in /srv/http/upload.php 

错误。

准确地说

Warning:  move_uploaded_file(): Unable to move '/tmp/phpZvJK1l' to '/home/administrator/SCRIPTS/tr/solution.cpp' in /srv/http/upload.php on line 20

我将/ tmp /,/ home / administrator / SCRIPTS / tr和/ srv / http的权限设置为777(我知道这不对,但我现在正在本地工作,我想让它以某种方式工作)

此外,我将这些目录的所有者设置为http(即运行PHP的用户),但事情仍然无效。

3 个答案:

答案 0 :(得分:2)

某些PHP配置不允许在用户docroot目录之外访问文件,因此您可能无法从PHP中访问/ tmp。尝试将文件上传到/ home / administrator目录中的临时目录 - 最好是访问Web浏览器无法访问的目录(docroot的兄弟目录)。

答案 1 :(得分:0)

授予/ tmp目录:

sudo chmod 777 / tmp

答案 2 :(得分:0)

作为Arch用户,我在处理Web项目时遇到同样的问题。

我建议您查看Arch Wiki的this部分

  

默认情况下,用户目录通过http://localhost/~yourusername/可用,并显示〜/ public_html的内容(可以在/etc/httpd/conf/extra/httpd-userdir.conf中更改)。

所以你必须创建〜/ public_html目录然后

  

您必须确保正确设置了主目录权限,以便Apache可以到达那里。您的主目录和〜/ public_html必须可以为其他人执行("世界其他地方"):

$ chmod o+x ~
$ chmod o+x ~/public_html
$ chmod -R o+r ~/public_html

之后,您不需要将文件放在/srv/http/下,现在可以使用~/public_html作为开发目录。