我的代码中有以下代码段:
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");
脚本终止但不返回错误。谁知道为什么?
答案 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以获取有关此信息的信息。