我正在尝试使用file_get_contents
函数来获取图像,但是会出现错误。为了处理错误,我使用了try catch块,但它没有捕获错误,但失败了。
我的代码:
try {
$url = 'http://wxdex.ocm/pdd.jpg'; //dummy url
$file_content = file_get_contents($url);
}
catch(Exception $e) {
echo 'Error Caught';
}
错误:
Warning: file_get_contents(): php_network_getaddresses: getaddrinfo failed: No such host is known
Warning: file_get_contents(http://wxdex.ocm/pdd.jpg): failed to open stream: php_network_getaddresses: getaddrinfo failed: No such host is known.
注意::我能够在远程获取其他任何有效的图片网址。
答案 0 :(得分:3)
$filtered = DB::table('tmp_table')->distinct()->select('type','description','note')->get()->toArray();
$to_fill = [];
foreach($filtered as $record) {
$to_fill[] = (array)$record;
}
DB::table('tmp_other')->insert($to_fill);
不起作用,因为try/catch
不是warning
。
您可以尝试使用此代码,以便也可以捕获警告。
exception
答案 1 :(得分:0)
以下是替代方法,只需要检查数据,否则可以抛出异常来处理它。与设置新的错误处理程序相比,它会更安全
try {
$url = 'http://wxdex.ocm/pdd.jpg';
$file_content = file_get_contents($url);
if(empty($file_content)){
throw new Exception("failed to open stream ", 1);
}else{
echo "File is loaded and content is there";
}
} catch (Exception $e) {
echo 'Error Caught';
}
答案 2 :(得分:0)
使用get header函数检查URL之前是否存在
$url = 'http://wxdex.ocm/pdd.jpg';
$file_headers = @get_headers($url);
if(!$file_headers || $file_headers[0] == 'HTTP/1.1 404 Not Found' ||trim($file_headers[0]) == 'HTTP/1.1 403 Forbidden') {
$exists = false;
}else{
$exists = true;
}
if($exists===true){
$file_content = file_get_contents($url);
}