0

imap ライブラリを使用していくつかのメールを取得しようとする機能があります。接続できない場合は、関数が他に何もせずに戻るようにしたいと思います。

$imap = imap_open($mailboxPath, $username, $password);
if (!$imap)
  return 0;

これは機能しますが、タイムアウトにより接続試行が失敗したという PHP 警告メッセージが表示されます。この警告が表示されないようにすることはできますか?

4

2 に答える 2

1

set_error_handler()関数を使用して、さまざまな種類の PHP エラーを処理する独自の関数を定義できます。警告の処理方法を変更したい場合、コードは次のようになります。

set_error_handler("warning_handler", E_WARNING);

$imap = imap_open($mailboxPath, $username, $password);
if (!$imap)
  return 0;

function warning_handler($errno, $errstr) { 
// don't display the message, maybe write it to log file
}

警告を非表示にするだけの場合は、空の無名関数を set_error_handler() に渡すことができます。

set_error_handler("warning_handler", function() {});

ただし、この場合、スクリプトで発生する可能性のある警告の痕跡が失われます。

于 2013-10-05T18:00:44.327 に答える
1

PHP で警告を明示的に抑制するには、呼び出している関数の前に@. ただし、これをできるだけ少なくするようにしてください。

于 2013-10-05T18:00:51.723 に答える