从浏览器加载执行curl图像下载

时间:2013-04-15 15:35:57

标签: php apache permissions

我有一个php curl脚本,可以从指定的URL下载图像。

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我在网上搜索了一些内容,结果发现你需要更改文件夹权限,默认情况下公众无法写入文件夹。

在Linux中,您可以通过执行以下操作来更改权限

chmod 666 /var/www/site/folder_name