file_get_contents():无法打开流:权限被拒绝

时间:2017-04-20 17:22:38

标签: php url file-upload permissions

我试图从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

2 个答案:

答案 0 :(得分:1)

这是因为imagestmp_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 imagestmp_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 {} \;

我希望它能解决你的问题。