我有一个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