在php中隐藏代码错误,但仍然执行页面的其余部分


Hide code errors in php but still execute the rest of the page

我希望有人能帮助我:我有这样的脚本,如果我的服务器上不存在文件,它会转到远程服务器来检查该文件。如果文件存在,它会将其复制到我的本地服务器,并且不会再次检查它。因此,Imagick部分只有在我的本地服务器上不存在图像时才能工作。

我遇到的问题是,如果远程服务器上不存在该文件,那么应用程序就会出错。以下是我的脚本代码:

        <?php if (file_exists($filename))
    {
echo '<img src="'.$imageurl1.'" width="'.$g_sites_img1.'" alt="'.$imageurlmeta.'" class="image1" align="left" />';
    }
else { $imageurlfolder = dirname($filename); 
@mkdir($imageurlfolder, 0755, true);
@copy($imgremoteurl, $filename);
$thumb = new Imagick($filename); 
$thumb->scaleImage($g_sites_img1, 0);
$thumb->writeImage($filename);
$thumb->destroy(); }?>

这是错误代码:

> Fatal error: Uncaught exception
> 'ImagickException' with message
> 'Unable to read the file:
> /home/game1/public_html/images/small///.jpg'
> in
> /home/game1/public_html/includes/standard__1.php:15
> Stack trace: #0
> /home/game1/public_html/includes/standard__1.php(15):
> Imagick->__construct('/home/game1/pub...')
> #1 /home/game1/public_html/includes/news.php(127):
> require('/home/game1/pub...') #2
> /home/game1/public_html/index1.php(126):
> include('/home/game1/pub...') #3
> {main} thrown in
> /home/game1/public_html/includes/standard__1.php
> on line 15

如何在避免此错误的同时仍能正常加载页面?

我已尝试error_reporting(0)<---一旦出现错误,这将阻止页面完全加载。

任何想法都将不胜感激。

我已经找到了所有答案的解决方案!感谢一百万

<?php if(file_exists($filename))

{echo";}else{try{$imageurlfolder=dirname($filename);@mkdir($imageurlfolder,0755,true)@副本($imgremoteurl,$filename);$thumb=新的Imagick($filename);$thumb->scaleImage($g_sites_img1,0)$thumb->writeImage($filename);$thumb->destroy();}catch(ImagickException$e){echo"捕捉到异常!''n";}}?>

好吧,你应该捕捉异常,不要试图忽略错误。毕竟,您会得到一个致命的错误,它会阻止进一步的逻辑执行。

try
{
    // your logic
}
catch ( ImagickException $e )
{
    // do something with it
}

如果远程服务器上不存在文件,则可以使用默认的本地映像。

使用捕获块

http://php.net/manual/en/internals2.opcodes.catch.php

这是一个异常,而不是错误。

你需要抓住它,然后处理它:

try {
  $thumb = new Imagick($filename); 
  // do your thing with it
  $thumb->destroy();
} catch (ImagickException $e) {
  // something went wrong, handle the problem
}

是的,您要查找的是try-catch语句。以下是PHP文档对它的看法

error_reporting(0);适用于错误,而不是例外:

try {
    // your code
} catch (Exception $e) {
    // code that runs in case an error appears
}
if (copy($imgremoteurl, $filename)) {
    // image functions
} else {
    // error copying image
}

将其封装在try块中,您可以处理错误并选择忽略它或对它执行任何操作。

致命错误就是致命错误。脚本已经死了,它不会再继续下去了,因为它的其余部分取决于存在的数据。

在远程服务器上不存在文件的情况下添加一些错误处理,您应该可以了。