我正在尝试在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的用户),但事情仍然无效。
答案 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
作为开发目录。