file_get_contents():无法打开流:权限被拒绝
我试图从url
加载image
。 一切工作正常localhost
。file_get_contents():无法打开流:权限被拒绝
当我运行在我的网络服务器的代码跟它
Warning: file_get_contents(url): failed to open stream: Permission denied in /home/www/ .../imageup.php on line 64
我搜索上google
并与*
很多答案尝试。 大家都在说要将proper permission
设置为文件和文件夹。
我已将permission
设置为php file
,并将文件夹设置为777
。
一些答案说运行一些命令,但我找不到控制台来运行该代码,所以我手动允许权限。
我可以理解,有一些权限,但无法弄清楚。 (有人可能会说这是一个重复的,并且可以是,但我无法找到解决方案)
$file = file_get_contents($image['src']);
请去你的项目的根目录并运行以下命令
find . -type d -exec chmod 770 {} \; && find . -type f -exec chmod 660 {} \;
我希望它能解决你的问题。
我需要一个控制台或其他东西来运行代码吗?或作为代码在文件中? – Sudarshan
这是因为images
和tmp_file_upload
只能通过root
用户写入。为了上传工作,我们需要使这些文件夹的所有者与httpd流程所有者相同,或者使它们成为全局可写的(不好的做法)。
1.查看apache进程所有者:$ps aux | grep httpd
。第一列将是车主通常这将是nobody
2.Change图像和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.对于更多的细节,为什么这种行为happend,查手册http://php.net/manual/en/ini.core.php#ini.upload-tmp-dir,请注意,它也谈到open_basedir
指令。
3个问题。 1)什么是src? 2)什么是你的网络主机的根3)你可以使用该功能的文件存在于你的PHP文件的相同文件夹。 – Augwa
1.''image ['src']'返回一个'url' – Sudarshan
所以它就像'http:// example.org/image.png'如果你在这方面获得了权限拒绝,这意味着'allow_url_fopen'是假。看到这个*问题,http://*.com/questions/3488425/php-ini-file-get-contents-external-url。您的虚拟主机提供商不允许这样做。 – Augwa