8

私はPHP 5.3.5を使用しており、使用しています

$this->marubox=@imap_open($this->server,$this->username,$this->password);

@ 記号はエラー報告を沈黙させるべきですが、そうではなく、この行でエラーが発生していると確信しています。アプリケーションが問題自体を認識して反応し、NOTICE エラーが発生しないようにしたいのですが、会社の開発ポリシーにより、PHP 全体のエラー報告をオフにすることはできません。

@なしで私は得ています:

imap_open() [function.imap-open]: ストリーム {pop3.seznam.cz:110/pop3} INBOX を開けませんでした。

ログイン情報が正しい場合、接続が開かれ、エラーは発生しません。

imap_open が接続できず、JSON の結果が台無しになると、常に NOTICE エラーが発生します。黙らせる方法を教えてください。

4

2 に答える 2

25

追加した

$this->marubox=@imap_open($this->server,$this->username,$this->password);
imap_errors();
imap_alerts();

そして、魔法imap_errors();imap_alerts();行います:)

于 2011-03-24T17:48:58.740 に答える
0

次の 2 つの可能性が考えられます。

  1. php.ini、ini_set、または .htaccess などで error_reporting を設定して NOTICE が抑制されるようにすることもできますが、アプリケーションでエラーを処理したくないため、これはおそらく必要なものではありません。

  2. 独自のエラー処理を実装します。これはそれほど難しいことではありません。エラー hadnling の関数を定義してから、独自のデフォルト ハンドラーの代わりにそれを使用するように PHP に指示します。

    //定義

    関数 myHandler($errno, $errstr) {}

    //処理スクリプトの先頭のどこか

    set_error_handler("myHandler");

詳細については、 set_error_handlerを参照してください。また、ハンドラーを登録した瞬間から、あなたは単独で責任を負うことに注意してください。必要な/必要なエラーを抑制またはスローできます。

于 2011-03-24T16:36:04.753 に答える