我试图从image
加载url
。
在localhost
中,一切正常。
当我在我的网络服务器上运行代码时,它正在说
Warning: file_get_contents(url): failed to open stream: Permission denied in /home/www/ .../imageup.php on line 64
我已在google
上搜索并尝试了stackoverflow
的许多答案。
每个人都说要将proper permission
设置为文件和文件夹。
我已将permission
的{{1}}和文件夹设为php file
。
有些答案说要运行一些命令,但我找不到运行该代码的控制台,所以我手动允许。
我可以理解,有一些许可,但无法弄清楚。 (有人可能会说这是重复的,可能就是这样,但我找不到解决方案)
777
答案 0 :(得分:1)
这是因为images
和tmp_file_upload
只能由root
用户写入。要上传到工作,我们需要使这些文件夹的所有者与httpd进程所有者相同,或者使它们全局可写(不良做法)。
1.检查apache进程所有者:$ps aux | grep httpd
。第一列通常是nobody
2.更改图像的所有者,并将tmp_file_upload变为nobody
或您在步骤1中找到的所有者。
$sudo chown nobody /var/www/html/mysite/images/
$sudo chown nobody /var/www/html/mysite/tmp_file_upload/
3.Chmod images
和tmp_file_upload
现在可以由所有者写入,如果需要[似乎你已经有了这个]。在@Dmitry Teplyakov的回答中提到。
$ sudo chmod -R 0755 /var/www/html/mysite/images/
$ sudo chmod -R 0755 /var/www/html/mysite/tmp_file_upload/
4.有关此行为发生的详细信息,请查看手册http://php.net/manual/en/ini.core.php#ini.upload-tmp-dir,注意它还在讨论open_basedir
指令。
答案 1 :(得分:-1)
请转到项目根目录并运行以下命令
find . -type d -exec chmod 770 {} \; && find . -type f -exec chmod 660 {} \;
我希望它能解决你的问题。