我有一个PHP脚本在执行时抛出错误。
警告:file_get_contents():C:''Apache24''htdocs''image''test2.php 第 68 行的文件名不能为空
警告:exif_imagetype():文件名不能在第 72 行的 C:''Apache24''htdocs''image''test2.php 中为空
基本上,脚本显示来自rss提要的图像,但问题不是仅显示其中的一部分图像。
这是脚本
error_reporting(E_ALL);
ini_set("display_errors", 1);
$url = "http://www.sahafah.net/rss.php";
$rss = file_get_contents($url);
ini_set('mbstring.substitute_character', "none");
$rss1= mb_convert_encoding($rss, 'UTF-8', 'UTF-8');
$rss3 = simplexml_load_string($rss1);
if($rss3)
{
$items = $rss3->channel->item;
foreach($items as $item)
{
$title = $item->title;
$link = $item->link;
$published_on = $item->pubDate;
$description = $item->description;
$category = $item->category;
$guid = $item->guid;
$string2 = $item->description;
preg_match('/http.*.jpg/',$string2,$match2);
$convert = implode(",", $match2);
// Read image path, convert to base64 encoding
$imageData = base64_encode(file_get_contents($convert));
// Format the image SRC: data:{mime};base64,{data};
$src = 'data: '.exif_imagetype($convert).';base64,'.$imageData;
// Echo out a sample image
echo '<img src="', $src, '">';
}
}
像很多PHP问题一样,答案是你的代码实际上没有任何问题。您看到的不是错误,而是警告,这些将在生产中被抑制,并且您的代码将正常工作。修复警告/通知是一个良好做法的问题,实际上取决于您是否打扰。但是,如果您想摆脱它们,您可以使用以下方法包装任何file_get_contents:
if(file_exists($convert)){
// Read image path, convert to base64 encoding
$imageData = base64_encode(file_get_contents($convert));
// Format the image SRC: data:{mime};base64,{data};
$src = 'data: '.exif_imagetype($convert).';base64,'.$imageData;
// Echo out a sample image
echo '<img src="', $src, '">';
}
或者,如果您不关心警告和通知,则可以在代码顶部执行以下操作:
error_reporting(E_ERROR);
这意味着打印到屏幕上的唯一内容将是实际错误,您不必受到警告和通知的干扰。