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

3

我正在尝试从网址加载图像。 在localhost中一切正常。

当我在我的网络服务器上运行代码时,它会出现以下错误:

警告:file_get_contents(url):未能打开流:权限被拒绝,位置在/home/www/ .../imageup.php的第64行

我已经在google上搜索并尝试了许多stackoverflow答案。每个人都说要为文件和文件夹设置适当的权限

我已经将php文件和文件夹的权限设置为777

有些答案说要运行一些命令,但我找不到控制台来运行该代码,因此我手动允许了权限。

我知道这涉及权限问题,但无法解决。(也许有人会说这是一个重复的问题,但我找不到解决方案)

$file = file_get_contents($image['src']);

3个问题。1)src是什么?2)你的webhost根目录是什么?3)你能在与你的php文件相同的文件夹中使用该函数吗? - Jonathan
$image['src'] 返回一个 url - user5538806
所以就像http://example.org/image.png一样。如果你在这上面得到了"permission denied",那么意味着allow_url_fopen是false。请查看这个stackoverflow问题:https://dev59.com/xHA75IYBdhLWcg3wFEsI。你的web托管提供商不允许这样做。 - Jonathan
我的服务器允许使用allow_url_fopen - user5538806
可能是 PHP ini file_get_contents 外部 url 的重复问题。 - Jonathan
2个回答

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. 如果需要,请现在将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
请前往您的项目根目录并运行以下命令。
find . -type d -exec chmod 770 {} \; && find . -type f -exec chmod 660 {} \;

希望这能解决你的问题。


我需要控制台或其他东西来运行代码吗?还是将其保存在文件中作为代码? - user5538806

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接