set_error_handle および at(@) シンボルに関連する問題
set_error_handle と at(@) 記号の問題
問題は、set_error_handle を使用してシステム エラーや警告情報をログ ファイルに書き込むことです。
ただし、fopen などの一部の API では、ファイルが存在しない場合、自分で作成したエラー処理関数が実行されてしまいます。以前は、fopen の前に @ 記号が追加されており、このような問題は表示されませんでした。
set_error_handle を使用したい場合でも、@ 関数を削除できます。やり方は?
ありがとうございます
-----解決策---------
トライキャッチでキャッチ
------解決策------------------
set_error_handler を使用する場合、次の 2 つの点に注意するだけで済みます。1. set_error_handler は、php.ini で設定するか、関数を使用して設定します。 2. カスタマイズ エラー処理関数の戻り値が false の場合、PHP のデフォルトのエラー処理がトリガーされます。戻り値が true の場合、PHP のデフォルトのエラー処理はトリガーされず、煩わしいエラーは表示されません。
書き方については、こちらを参考にしてください。
function myErrorHandler($errno, $errstr, $errfile, $errline)
{
if (!(error_reporting() & $errno)) {
//このエラー タイプが error_reporting に含まれていない場合
return;
}
switch ($errno) {
case E_USER_ERROR:
echo "My ERRORn";
echo " ファイル $errfile の $errline 行で致命的なエラーが発生しました";
echo ", PHP " . PHP_VERSION . " (" . PHP_OS . " )
n";
echo "中止中...
n";
exit(1);
Break;
case E_USER_WARNING:
echo "私の警告 [$errno] $errstr
n";
Break;
case E_USER_NOTICE:
echo "< b>私の通知 [$errno] $errstr
n";
Break;
デフォルト:
echo "不明なエラーの種類: [$errno] $errstr
n";
Break;
}
// false を返すと PHP のデフォルトのエラー処理がトリガーされ、true を返すとカスタム関数のみを使用して処理します。
return true;
}
set_error_handler('myErrorHandler');
fopen('/tmp/foo', 'r');
------解決策------------------
テスト後、コード #5 は要求を満たすことができます! 実行後、
fopen('/tmp/foo', 'r');
が失敗した場合、
不明なエラー タイプ: [2] fopen(/tmp/foo) [function .fopen ]: ストリームを開けませんでした: そのようなファイルまたはディレクトリはありません
If
@fopen('/tmp/foo', 'r');
失敗すると、何も表示されません

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP は、長い間使用されている人気のある Web 開発言語です。 PHP に統合された PDO (PHP Data Object) クラスは、Web アプリケーションの開発中にデータベースと対話する一般的な方法です。ただし、一部の PHP 開発者がよく遭遇する問題は、PDO クラスを使用してデータベースと対話するときに、次のようなエラーが表示されることです。

Vue アプリケーションで axios を使用するのは非常に一般的です。axios は、ブラウザーと Node.js で使用できる Promise ベースの HTTP クライアントです。開発プロセス中に、「Uncaught(inpromise)Error: Requestfailedwithstatuscode500」というエラー メッセージが表示されることがありますが、開発者にとって、このエラー メッセージは理解および解決が難しい場合があります。この記事ではこれについて説明します

C++ コードの「error:incompletetypeisnotallowed」問題を解決します。C++ プログラミング プロセス中に、コンパイル エラーが発生することがあります。一般的なエラーの 1 つは、「error:incompletetypeisnotallowed」です。このエラーは通常、不完全な型を操作することによって発生します。この記事では、このエラーの原因を説明し、いくつかの解決策を提供します。まず、私は

C++ コードの「error:expectedinitializerbefore'datatype'」問題を解決します。C++ プログラミングでは、コードを作成するときにコンパイル エラーが発生することがあります。一般的なエラーの 1 つは、「error:expectedinitializerbefore'datatype'」です。このエラーは通常、変数宣言または関数定義で発生し、プログラムが正しくコンパイルされなかったり、

起動できない「0271: リアルタイム クロック エラー」の解決策: 1. F1 キーを押し、表示されるインターフェイスでオプション バーを 3 番目の項目「日付/時刻」に移動します; 2. システム時刻を手動で現在の時刻に変更します。 1 回; 3. F10 キーを押し、ポップアップ ダイアログ ボックスで [はい] を選択します; 4. ノートブックを再度開いて、通常どおり起動します。

PHPWarning:fopen():SSLoperationfailedinfile.phponlineX を解決する方法 PHP プログラミングでは、fopen 関数を使用してファイルまたは URL を開いて関連する操作を実行することがよくあります。ただし、fopen 関数を使用すると、Warning:fopen():SSLoperationfailedinfile.p のようなエラーが発生することがあります。

PHPWarning:fopen():failedtoopenstream:Permissiondenied を解決する方法 PHP プログラムの開発プロセスでは、PHPWarning:fopen():failedtoopenstream:Permissiondenied などのエラー メッセージに遭遇することがよくあります。このエラーは通常、ファイルまたはディレクトリのアクセス許可が正しくないことが原因で発生します。

PHP を使用して Web アプリケーションを作成する場合、データの保存に MySQL データベースがよく使用されます。 PHP は、MySQLi と呼ばれる MySQL データベースと対話する方法を提供します。ただし、MySQLi を使用している場合、以下に示すようなエラー メッセージが表示されることがあります。 PPHPFatalerror:Calltounknownfunctionmysqli_connect() このエラー メッセージは、PHP が MySQLi を見つけられないことを意味します。
