Php 从浏览器加载执行curl图像下载
我有一个php curl脚本,可以从指定的url下载图像 当有人访问我的网站时,会从我的服务器下载一个图像。但是,如果该图像不可用,它将使用curl从我的供应商服务器下载,我宁愿所有图像都直接从我的服务器下载,因为我不想给我的供应商服务器带来任何压力 脚本在ssh中运行时工作正常,例如Php 从浏览器加载执行curl图像下载,php,apache,permissions,Php,Apache,Permissions,我有一个php curl脚本,可以从指定的url下载图像 当有人访问我的网站时,会从我的服务器下载一个图像。但是,如果该图像不可用,它将使用curl从我的供应商服务器下载,我宁愿所有图像都直接从我的服务器下载,因为我不想给我的供应商服务器带来任何压力 脚本在ssh中运行时工作正常,例如/usr/bin/php/var/www/site/image_.php,但在浏览器中加载时不会下载图像。 e、 g.www.example.com/image_.php 我需要做什么来确保浏览器负载足以下载映像
/usr/bin/php/var/www/site/image_.php
,但在浏览器中加载时不会下载图像。
e、 g.www.example.com/image_.php
我需要做什么来确保浏览器负载足以下载映像?看起来像是web服务器权限错误,当您在控制台上运行它时,您是在您作为登录用户的身份下运行的。这与为网站内容提供服务的用户不同(可能是“无人”)我在网上做了更多搜索,结果发现您需要更改文件夹权限,默认情况下,公众无法写入文件夹 在linux中,您可以通过执行以下操作来更改权限
chmod 666/var/www/site/folder\u name
它是否打印出任何错误或警告?@Martin没有打印出任何错误,当我查看日志文件时,我也没有看到任何错误。这就是我添加权限标记的原因,但我已将其全部读取,没有幸运的写入和执行权限您需要检查您添加的权限是否适用于正确的用户抱歉,我是说777,但我担心安全问题这就是为什么我添加了775
,这是一个更安全的选择。
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")