file_get_contents给出错误的文件名不能为空


file_get_contents giving error Filename cannot be empty

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

这意味着打印到屏幕上的唯一内容将是实际错误,您不必受到警告和通知的干扰。