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


Executing curl image download from browser load

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

用curl从url保存图片

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

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

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

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

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

chmod 666 /var/www/site/folder_name