错误处理返回空白

时间:2009-11-04 09:13:04

标签: php error-handling

我的代码中有以下代码段:

switch ($extention)
{
 case "gif": $src = @imagecreatefromgif($uploadedfile); break;
 case "jpeg": $src = @imagecreatefromjpeg($uploadedfile);  break;
 case "png": $src = @imagecreatefrompng($uploadedfile); break;
 default: $src = @imagecreatefromjpeg($uploadedfile);  break;
}

if(!$src)
 die("Error: Could not upload image code:#011");

脚本终止但不返回错误。谁知道为什么?

4 个答案:

答案 0 :(得分:1)

它在哪里结束?如果那是你的整个剧本,你很自然地得不到任何输出(你没有输出任何东西)。尝试在这里放置echo - 语句,并找到脚本断开的行。

在答案澄清后

编辑

你无法捕获PHP中的内存不足错误,这根本不可能(你要做的任何事情都需要更多的内存)。您甚至无法检查内存是否可用,因为您无法知道10kb jpeg图像需要多少内存(这取决于图像的尺寸,颜色深度等)。

我能想到处理此类错误的唯一方法是在PHP之外进行操作(使用exec()调用另一个脚本或使用exec()或类似的方式使用imagemagick执行此操作)

答案 1 :(得分:0)

@ - 运算符会抑制错误,将其删除。

答案 2 :(得分:0)

echo "bar";
switch ($extention)
{
    case "gif": $src = @imagecreatefromgif($uploadedfile); echo "foo"; break;
    case "jpeg": $src = @imagecreatefromjpeg($uploadedfile); echo "foo"; break; // best quality
    case "png": $src = @imagecreatefrompng($uploadedfile); echo "foo"; break; // no compression
    default: $src = @imagecreatefromjpeg($uploadedfile); echo "foo"; break; // best quality
}

echo "foo";
if(!$src)
    die("Error: Could not upload image code:#011");
echo "foo foo";

仅返回“bar”

答案 3 :(得分:0)

有人建议暂时删除@符号以找出哪个imagecreatefrom ...正在破坏你的脚本,一旦你调试它就把它们放回去。另外因为你在imagecreatefrom ...函数之后回显了foo这打破了它永远不会打印出来的过程。

评论后编辑:

好的,如果你想自己处理错误只是使用@不起作用,它会抑制消息,但不会发生致命错误。您需要设置错误处理程序,查看here以获取有关此信息的信息。

相关问题