【发布时间】:2015-01-07 10:44:31
【问题描述】:
由于 imagecreatefromjpeg 函数,我正在尝试捕获以下错误。
损坏的 JPEG 数据:数据段提前结束
我不想在我的 PHP 脚本的输出中显示这个错误,所以我尝试使用 ob_start 和 ob_get_contents 但它不起作用。目标是捕获此错误以了解哪些图像已损坏。
这是我的代码:
ob_start();
$img = imagecreatefromjpeg($imgDestinationPath);
$output = ob_get_contents();
echo "test";
ob_end_clean();
if( $output == "Corrupt JPEG data: premature end of data segment" )
{
$this->log("The following image is corrupted : $imgDestinationPath");
}
var_dump($output);
输出:
损坏的 JPEG 数据:数据段过早结束 字符串(4)“测试”
损坏的图像:
关于为什么我没有在缓冲区中获得 imagecreatefromjpeg 输出的任何想法?
【问题讨论】:
-
尝试使用
try { //Try your stuff here } catch(Exception $e) { echo "do your stuff to catch it here" }块而不是ob_start()!这对你有用吗? -
imagecreatefromjpeg在遇到任何错误时返回false。除非我错过了看输出缓冲区的东西,否则这里似乎没有必要。你不能简单地改用if (!$output) { $this->log("..."); }吗? -
还有一个很好的例子,说明如何在 PHP 文档站点上使用
imagecreatefromjpeg时捕获错误:php.net/manual/en/function.imagecreatefromjpeg.php -
这是我的第一次尝试,但也没有成功。
-
不幸的是,在我的情况下 imagecreatefromjpeg 不会返回 false。 var_dump(imagecreatefromjpeg($img)) 返回: (gd) 类型的资源(537)。看来这只是一个警告。