【发布时间】:2017-10-17 19:03:12
【问题描述】:
我有一个简单的脚本:
<?php
$source = '../path/img.jpg';
$image = imagecreatefromjpeg($source);
?>
终于找到了:
致命错误:允许的内存大小为 134217728 字节已用尽
但是当我尝试做这样的事情时:
<?php
$source = '../path/img.jpg';
$image = @imagecreatefromjpeg($source); // Mute Fatal Error
if ( !$image )
{
die('Image file is too large');
}
?>
但它不起作用。致命错误正在停止我的脚本。有什么办法可以改变这种情况?我想知道何时存在致命错误(然后我得到 FALSE 作为 $image)然后我想停止脚本,但首先我想打印有关它的信息。
谢谢。
【问题讨论】:
-
您是否考虑过在尝试处理文件之前检查文件大小?
-
检查文件大小对(压缩)图像没有多大好处。问题是在使用
imagecreate*函数时,一个很小(高度压缩)的 jpg 可能会占用大量内存(主要由图像的像素大小决定)。 -
@Mikk3lRo 嗯,我没有意识到这一点。我不怎么处理图片。不过有道理。
-
我认为您唯一的出路是将图像处理与主逻辑分开 - 根据您使用它的位置,您可能会使用 shell 命令启动一个单独的进程,发送一个 ajax 请求或者其他的东西。但不知何故,您需要让处理脚本本身出错而不影响主应用程序。然后主应用程序可以检查“外部”处理脚本的输出并向用户报告。我会发布一个带有建议的答案,但我认为需要更多关于您的环境的详细信息才能将其保持在几页以下;)
-
好的,作为一个新的(自我回答的)问题发布:stackoverflow.com/questions/46798454/…