【问题标题】:downloading an image with file_put_contents使用 file_put_contents 下载图像
【发布时间】:2018-01-20 18:14:45
【问题描述】:

我正在尝试将图像从外部站点下载到本地文件夹,但出现以下错误:

file_put_contents(media/logos/7dbde54700af67e3703384c9599780ef): 无法打开流:权限被拒绝

我已使用以下命令将“media/logos”文件夹的所有权设置为“apache”用户:

chown -R apache:apache media/logos
chmod -R 777 media/logos

ls -l 命令显示如下:

drwxrwxrwx. 3 apache apache     19 Jan 20 17:58 media

而我的PHP代码如下:

$ImageUrl = "http://www.example.com/media/image1.png";
$localPath = "media/logos/" . md5(uniqid());

file_put_contents($localPath, file_get_contents($ImageUrl));

我在这里错过了什么?

【问题讨论】:

  • 您是否注意到您保存的图像没有扩展名(即没有.png)?这样做$localPath = "media/logos/" . md5(uniqid()) . '.png'; 看看是否有帮助。

标签: php apache centos


【解决方案1】:

使用copy()

$ImageUrl = "http://www.example.com/media/image1.png";
$localPath = "media/logos/" . md5(uniqid());
copy($ImageUrl, $localPath);

现在小心你的本地路径,我假设你真正想要的是

$localPath = __DIR__ . "/media/logos/" . md5(uniqid());

【讨论】:

  • 同上,也添加一个扩展。
  • 感谢您的回答。不幸的是,在复制您的代码后,我仍然遇到同样的错误。即使在 $localPath 变量中添加了 PNG 扩展字符串。复制(/var/www/html/application/media/logos/20ec5a55adfba79866a2cea12245f27e.png):无法打开流:权限被拒绝
  • php 不关心扩展名,这里的问题是路径是相对于当前目录的,这显然不是 MC_nulty 认为的目录,仅通过代码无法知道问题中给出
  • ls -l /var/www/html/application/media/logos 给你什么? ls -l 在路径上的每个目录(/var/www/html/application/media、/var/www/html/application、/var/www/html、/var/www)上还为您提供什么?如果这些目录中的任何一个不可读,您将获得权限被拒绝
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-21
  • 1970-01-01
  • 2012-08-18
  • 2013-06-23
  • 2014-07-29
  • 2015-11-07
相关资源
最近更新 更多