【问题标题】:error handling in phpphp中的错误处理
【发布时间】:2009-05-21 12:59:17
【问题描述】:

我有一个文件可以打开一个 URL 并读取它并进行解析。 现在,如果该 URL 变为 dwon 并且我的文件无法打开它,那么我需要的是应该生成错误邮件,但在终端或 konsole 上不应出现错误消息。 我怎样才能做到这一点? 请帮忙!!

【问题讨论】:

    标签: php error-handling


    【解决方案1】:

    你总是可以做这样的事情(我假设你正在使用 file_get_contents)

    $file = @fopen("abc.com","rb");
    if(!$file) { 
        @mail(.......); 
        die(); 
    } 
    //rest of code. Else is not needed since script will die if hit if condition
    

    【讨论】:

    • 这就是我在做什么,我使用@fopen 而不是@file_get_contents 但我想要的是错误不应该出现在终端/Konsole 上。通过使用这种代码我在终端上收到错误消息时我在那里执行它。我希望在 termianl 上不会出现错误 msg shud。
    • "@" 符号抑制错误消息,可能是其他代码行导致错误回显。您应该发布代码的 sn-p,否则很难给出好的建议。
    • $flag=0; $file = @fopen("abc.com","rb") 或 $flag=1; if($flag==1) { 邮件(.......);死(); } else { .......... } 此代码以我想要的方式生成邮件,但问题是我在终端/控制台上也收到了该错误,这是我不想要的。我想要的是即使 URL 已关闭,在执行此文件时终端/Konsole 上也不应该出现错误......我希望你能理解我在说什么............
    • 有一个名为 display_errors 的 ini 文件设置,可能需要检查它是否开启
    【解决方案2】:

    如果您通过网络检索文件,请改用 curl。它内置了错误处理,它会告诉你发生的错误。使用 file_get_contents 不会告诉你出了什么问题,它也不会遵循重定向。

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'http://domain.com/file');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    $result = curl_exec($ch);
    if ( $result == false ) {
        $errorInfo = curl_errno($ch).' '.curl_error($ch);
        mail(...)
    } else {
        //Process file, $result contains file contents
    }
    

    【讨论】:

      【解决方案3】:
      if (!$content = file_get_contents('http://example.org')) {
        mail(...);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-04
        • 2015-07-05
        • 2018-10-06
        相关资源
        最近更新 更多