我没有安装 curl。之前已经提到过这段代码应该可以工作,
file_put_contents($target_path,file_get_contents($image));
但它不适合我,它会使用正确的名称等放置图像......但大小为 0 字节。$target_path 具有正确的权限,并且 allow_url_fopen 为 On。
我做错什么了吗?
我没有安装 curl。之前已经提到过这段代码应该可以工作,
file_put_contents($target_path,file_get_contents($image));
但它不适合我,它会使用正确的名称等放置图像......但大小为 0 字节。$target_path 具有正确的权限,并且 allow_url_fopen 为 On。
我做错什么了吗?
allow_url_fopen
不是file_get_contents
URL 可能中断的唯一标准。服务器可能设置为处理或检测身份验证/用户代理等。
首先尝试将您的数据放入一个变量并打印出来,看看它是否能够获取内容;
$img = "";
$img = file_get_contents($image);
echo $img; //for debugging..
//for running..
if(!$img) die("no data fetched");
现在如果$img
有数据,接下来尝试将其写入文件:
$result = file_put_contents($target_path,$img);
if($result=== FALSE)
die("Error writing data into $target_path");
else
echo "$result bytes written to $target_path";
您面临的问题是您拥有的嵌套函数列表中有多个故障点。虽然它很漂亮,并且可以将多行代码压缩成一行,但它很难调试,并且在您面临的情况下,您将无法轻松确定哪一个是有问题的代码。
尝试拆分你的代码并添加一些基本的错误处理,这样你也许可以做一些事情,而不是仅仅在错误的情况下将 0 字节写入文件:
<?php
error_reporting(E_ALL);
$target_path = "./some_path/";
$new_img = "new_image.jpg";
if(file_exists($target_path)){
$img = file_get_contents($image);
if(strlen($img) >=1){
file_put_contents($target_path . $new_img, $img);
}else{
echo 'Error fetching $image';
}
}else{
echo '$target_path not found';
}
?>
它必须工作检查$image
并且$target_path
路径和url正确的内容很适合使用dirname(__FILE__)
它$target_path
有助于 dirname(__FILE__).'/image.jpg'
拥有正确的目标路径
注意你必须使用完整路径 $target_path
您可以测试与 fopen 一起使用的此功能,它也可以工作,但速度较慢
function Request($url,$File="",$Method='POST',$data=null, $optional_headers = null,$Debug=0){
$params = array('http' => array('method' => $Method));
$optional_headers.="Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n";
$optional_headers.="Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3\r\n";
$optional_headers.="Accept-Encoding:gzip,deflate,sdch\r\n";
$optional_headers.="Accept-Language:en-US,en;q=0.8\r\n";
$optional_headers.="Cache-Control:max-age=0\r\n";
$optional_headers.="Connection:keep-alive\r\n";
$optional_headers.="User-Agent:Mozilla/5.0 AppleWebKit/536.5 (KHTML, like Gecko) SepidarBrowser/1.0.100.52 Safari/536.5\r\n";
if ($data !== null) {
$params['http']['content'] = $data;
}
if ($optional_headers !== null) {
$params['http']['header'] = $optional_headers;
}
$ctx = stream_context_create($params);
$fp = @fopen($url, 'rb', false, $ctx);
if (!$fp) {
return false;
}
$response= @stream_get_meta_data($fp);
$out['header'] = $response['wrapper_data'];
$out['body']='';
if($File!=""){
$fout = @fopen($File, 'w+');
}
while(!@feof($fp)){
$buffering=@fread($fp,1024*8);
// echo "***************\n".strlen($buffering)."\n".$buffering."\n***********************";
if($buffering==''){break;}
if($File!=""){
@fwrite($fout,$buffering);
if($Debug==1)echo strlen($buffering)."-->Download And Stored IN".$File;
}
$out['body'] .=$buffering;
}
if(trim(@$out['header']['Content-Encoding'])=='deflate'){
$out['body']=gzinflate($out['body']);
}
fclose($fp);
return $out;
}
Request($target_path,$image,'GET');