2017-10-17 69 views
0

我有一个简单的脚本:PHP - 致命错误 - 是否有任何方法不停止脚本?

<?php 

$source = '../path/img.jpg'; 
$image = imagecreatefromjpeg($source); 

?> 

最后我:

Fatal Error: Allowed Memory Size of 134217728 Bytes Exhausted

但是当我尝试做这样的事情:

<?php 

$source = '../path/img.jpg'; 

$image = @imagecreatefromjpeg($source); // Mute Fatal Error 
if (!$image) 
{ 
    die('Image file is too large'); 
} 

?> 

,但它不工作。致命错误正在停止我的脚本。有什么办法可以改变这种情况吗?我想知道致命错误何时存在(然后我将FALSE设为$ image),然后我想停止脚本,但首先我要打印关于它的信息。

谢谢。

+2

您是否在尝试处理它之前考虑过检查文件大小? –

+0

检查文件大小对于(压缩)图像来说效果不佳。问题是,当使用'imagecreate *'函数时,一个很小的(高度压缩的)jpg文件可能会占用大量的内存(主要取决于图像的像素大小)。 – Mikk3lRo

+0

@ Mikk3lRo嗯,我没有意识到这一点。我没有太多的图像。有意义,但。 –

回答

-1

致命错误无法静音或捕捉。您需要通过在php.ini中使用memory_limit设置来提高PHP脚本允许的内存容量

+0

这是一条绷带。如果他试图打开的文件是200MB,那么它仍然会失败 – Machavity

+1

另请参阅[这个答案](https://stackoverflow.com/a/18660082) – Machavity

+0

@Machavity你是对的,它太快答案在这里发布 – Flying