2013-04-15 42 views
0

我有一个PHP卷曲脚本从指定的网址下载图像。执行从浏览器加载卷曲图像下载

Save image from url with curl PHP

function grabImage($url, $saveto){ 
    $ch = curl_init ($url); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_BINARYTRANSFER,1); 
    $raw=curl_exec($ch); 
    curl_close ($ch); 
    if(file_exists($saveto)){ 
     unlink($saveto); 
    } 
    $fp = fopen($saveto,'x'); 
    fwrite($fp, $raw); 
    fclose($fp); 
} 

grabImage("www.example.com/image/2.png", "/var/www/site/images/image_2.png") 

当一个人访问我的网站,如果图像是不可用的,将使用curl从我的供应商的服务器上下载它从我的服务器的图像但是下载,我宁愿所有的图片都下载从我的服务器直接,因为我不想给我的供应商服务器上任何压力。

该脚本在ssh中运行时工作正常, /usr/bin/php /var/www/site/image_s.php,但是当它在浏览器中加载时,它不会下载图像。 例如www.example.com/image_s.php

我需要做些什么来确保浏览器负载足以下载图像?

+0

是否打印任何错误或警告更改权限? – martin

+0

@Martin没有错误已打印出来,当我看我的日志文件时,我也看到没有错误 –

回答

0

我在网上做了一些更多的搜索,结果你需要更改文件夹权限,默认情况下公众可以不写入文件夹。

在Linux中,你可以通过执行以下操作

chmod 666 /var/www/site/folder_name

+0

带'666'的文件夹?你的意思是'777'或'775',对吧? – Raptor

+0

对不起,我的意思是777,但我担心安全问题 –

+0

这就是为什么我加了'775',这是一个更安全的选择。 – Raptor

0

看起来像一个Web服务器权限错误,当您在控制台上运行它时,您正在以您登录的用户身份运行。这与为网站内容提供服务的用户不一样(它可能是'没有人')

+0

是的,我依赖于这就是为什么我添加了权限标记,但是我已经给它提供了所有读,写和执行权限没有运气 –

+1

你需要检查你添加的权限是否为正确的用户 –