ホームページ バックエンド開発 PHPチュートリアル PHPエラーシールドエラー_レポート詳細説明_PHPチュートリアル

PHPエラーシールドエラー_レポート詳細説明_PHPチュートリアル

Jul 13, 2016 am 10:55 AM
error php windows 存在する シールド チュートリアル 環境 詳しい説明 間違い

Windows 環境の場合: プログラムは元々 PHP チュートリアル 4.3.0 で正常に実行されていましたが、4.3.1 で多くのエラーが報告されるのはなぜですか? 一般的なプロンプトは次のとおりです: 注意: 未定義の変数: 変数名。 たとえば、次のコード:
コードをコピーします コードは次のとおりです:
if (!$tmp_i) {
$tmp_i=10; }

4.3.0 では正常に実行されますが、4.3.1 で実行すると Notice:Unknown varialbe:tmp_i というメッセージが表示されます

次の質問:

1. 何が問題ですか?
2. このコードはどのように変更する必要がありますか?
3. コードを変更せずに、4.3.0 の元のプログラムを 4.3.1 環境で正常に実行できるように php.ini の設定を変更するにはどうすればよいですか?

解決策:

プログラムの冒頭に文を追加します:

error_reporting(E_ALL & ~E_NOTICE); または error_reporting(E_ALL ^ E_NOTICE);


または

php.ini を変更する

error_reporting = E_ALL & ~E_NOTICE

error_reporting() 関数について:

error_reporting() は、PHP のエラー報告レベルを設定し、現在のレベルを返します。


; エラー報告はビット単位です。または、数値を合計して、必要なエラー報告レベルを取得します。

; E_ALL - すべてのエラーと警告

; E_ERROR - 致命的な実行時エラー
; E_WARNING - 実行時警告 (致命的ではないエラー)
; E_PARSE - コンパイル時の解析エラー
; E_NOTICE - 実行時のリマインダー (コードのバグが原因で発生することがよくあります。
)
;意図的な行動によって引き起こされることもあります。 (例: 初期化されていない変数に基づいて自動的に初期化されます

;初期化されていない変数の代わりに空の文字列が使用されるという事実)


; E_CORE_ERROR - PHP 起動時の初期化プロセス中に発生する致命的なエラー

; E_CORE_WARNING - PHP 起動の初期化プロセス中に発生する警告 (致命的ではないエラー)

; E_COMPILE_ERROR - 致命的なコンパイル時エラー
; E_COMPILE_WARNING - コンパイル時の警告 (致命的ではないエラー)
; E_USER_ERROR - ユーザーが生成したエラー メッセージ
; E_USER_WARNING - ユーザーが生成した警告メッセージ
; E_USER_NOTICE - ユーザーが生成したリマインダーメッセージ

使用方法:

error_reporting(0);//エラー報告を無効にする

error_reporting(E_ALL ^ E_NOTICE);//E_NOTICE を除くすべてのエラー メッセージを表示します

error_reporting(E_ALL^E_WARNING^E_NOTICE);//E_WARNING E_NOTICE を除くすべてのエラー メッセージを表示します
error_reporting(E_ERROR | E_WARNING | E_PARSE);//実行時エラーを表示します。これは error_reporting(E_ALL ^ E_NOTICE); と同じ効果があります。 error_reporting(E_ALL);//すべてのエラーを表示

PHP エラーが発生しました

重大度: 注意

メッセージ: 未定義の変数: ユーザー

通常、デフォルトの通常の PHP ファイルで未定義の宣言された変数を出力する場合、エラーは報告されませんが、codeigniter フレームワークではエラーが報告されます。これは、ページの追加と変更を統合したい「怠け者」にとっては非常に不快です。便利です。私は初心者なので、コード内でこのエラー メッセージをブロックしたいと思っています。@ も使用しましたが、@ を使用するとパフォーマンスが大幅に低下すると多くの人が言っています...

最後に、codeigniter は意図的にこのエラー メッセージを表示しているのではないかと思いました。この種のエラーをブロックするにはどうすればよいでしょうか? .php の error_reporting(E_ALL); を

に変更するだけです。 error_reporting(E_ALL ^ E_NOTICE); このエラーは、他のエラーに影響を与えることなくブロックできます。


見つかった情報の一部を以下に示します:

error_reporting() は、PHP のエラー報告レベルを設定し、現在のレベルを返します。

文法

エラーレポート(レポートレベル)

パラメータレベルが指定されていない場合は、現在のエラーレベルが返されます。レベルに使用できる値は次のとおりです:


1 E_エラー
2 E_警告

4 E_PARSE

8 E_通知
16 E_CORE_ERROR
32 E_CORE_WARNING
64 E_COMPILE_ERROR
128 E_COMPILE_WARNING
256 E_USER_エラー
512 E_USER_警告
1024 E_USER_NOTICE
2047 E_ALL
2048 E_STRICT
E_NOTICE は、通常の状況が記録されないことを意味し、存在しない変数にアクセスしようとしたり、存在しないファイルを表示するために stat() 関数を呼び出したりするなど、プログラムにエラーが発生した場合にのみ使用されます。

E_WARNING は通常表示されますが、プログラムの実行は中断されません。これはデバッグに役立ちます。たとえば、問題のある正規表記を使用して ereg() を呼び出します。

通常は E_ERROR が表示され、プログラムの実行が中断されます。これは、このマスクを使用してメモリ構成やその他のエラーを追跡できないことを意味します。

E_PARSE 構文からのエラーを解析します。

E_CORE_ERROR E_ERROR と似ていますが、PHP コアによって引き起こされるエラーは除外されます。

E_CORE_WARNING E_WARNING と似ていますが、PHP コア エラー警告は含まれません。

PHPエラーレポート
php.ini ファイルには多くの構成設定があります。 Linux への PHP および Apache 2 のインストールに関するドキュメントに示されているように、php.ini ファイルがすでにセットアップされ、適切なディレクトリに配置されている必要があります。 PHP アプリケーションをデバッグするときに注意すべき構成変数が 2 つあります。 2 つの変数とそのデフォルト値は次のとおりです:
display_errors = オフ
error_reporting = E_ALL
これら 2 つの変数の現在のデフォルト値は、php.ini ファイル内で検索すると見つかります。 display_errors 変数の目的は明らかです。この変数は、エラーを表示するかどうかを PHP に指示します。デフォルト値はオフです。ただし、開発プロセスを容易にするために、この値をオンに設定します。
display_errors = オン
error_reporting 変数のデフォルト値は E_ALL です。この設定では、不適切なコーディング方法から無害なヒント、エラーに至るまで、あらゆるものが表示されます。 E_ALL は、ブラウザの出力を混乱させる小さな事柄 (初期化されていない変数など) についてのヒントも画面上に表示するため、開発目的には少し粒度が高すぎます。私が知りたいのはエラーと不適切なコーディング方法だけであり、無害なヒントは知りたいわけではありません。したがって、error_reporting のデフォルト値を次の値に置き換えてください:
error_reporting = E_ALL & ~E_NOTICE

Apacheを再起動すると、すべてが設定されます。次に、Apache で同じことを行う方法を学びます。

サーバー上のエラー報告
Apache の動作によっては、コンピュータ上に複数のバージョンの PHP が存在する可能性があるため、PHP でエラー報告を有効にしても機能しない場合があります。 Apache は 1 つの php.ini ファイルしか参照できないため、Apache が使用している PHP バージョンを判断することが難しい場合があります。 Apache が自身の設定にどの php.ini ファイルを使用しているかわからないことは、セキュリティ上の問題です。ただし、正しいエラー レベルが設定されるように Apache で PHP 変数を構成する方法があります。

また、サーバー側でこれらの構成変数を設定して、php.ini ファイルをオーバーライドまたはプリエンプトして、より高いレベルのセキュリティを提供する方法を知っておくと良いでしょう。
Apache を構成するときは、/conf/httpd.conf にある http.conf ファイルの基本構成にすでに触れている必要があります。

php.ini ファイルで既に行ったことを行うには、次の行を httpd.conf に追加し、php.ini ファイルを上書きします。 php_flag display_errors on
php_value error_reporting 2039
これにより、php.ini ファイルに既に設定されている display_errors のフラグと error_reporting の値がオーバーライドされます。値 2039 は E_ALL および ~E_NOTICE を表します。 E_ALL を使用する場合は、値を 2047 に設定します。繰り返しますが、Apache を再起動する必要があります。
次に、サーバー上でエラー報告をテストする必要があります。

error_reporting() 関数に関しては、一部のエラー メッセージをシールドできますが、PHP コアに起因するエラーはシールドできません。PHP コアに起因するエラーは、書き込み形式に従っていないため、PHP ファイルのコンパイルが失敗する直接の原因となるためです。コーディングルールによって引き起こされるPHPのエラーはブロックできません

コードをコピーします コードは次のとおりです:
* 現時点では、E_STRICT モードの警告は回避してください
* (これは関数定義の前に行う必要があります)
*/
if (定義('E_STRICT')) {
$old_error_reporting = エラー_レポート(0); if ($old_error_reporting & E_STRICT) {
error_reporting($old_error_reporting ^ E_STRICT); } その他 {
エラーレポート($old_error_reporting); }
unset($old_error_reporting);

一般的なものは次のとおりです:
コードをコピーします コードは次のとおりです:
// すべてのエラー報告をオフにする すべてのエラーをオフにする

エラー報告(0);


//単純な実行エラーを報告する;単純な実行エラーを報告する
error_reporting(E_ERROR | E_WARNING | E_PARSE);

// E_NOTICE を報告することも有効です (初期化されていないことを報告するため

) // 変数、または変数名のスペルミスの検出…); いくつかの初期化されていない変数のレポートまたは変数名のスペルミスの検出が含まれます
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

//E_NOTICE を除くすべてのエラーを報告します
// これは php.ini に設定されたデフォルト値です; E_NOTICE を除くすべてのエラーを報告します これは php.ini に設定されたデフォルト値でもあります
error_reporting(E_ALL ^ E_NOTICE);

// すべての PHP エラーを報告します (PHP 3 ではビット単位 63 が使用される可能性があります);すべてのエラーを報告します
エラー報告(E_ALL);

// error_reporting(E_ALL) と同じ 上記と同じ

ini_set('error_reporting', E_ALL);


www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/632278.html技術記事 Windows 環境の場合: プログラムはもともと PHP チュートリアル 4.3.0 で正常に実行されていましたが、4.3.1 で多くのエラーが報告されるのはなぜですか? 一般的なプロンプトは次のとおりです。 たとえば、次のコードです。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PHPおよびPython:さまざまなパラダイムが説明されています PHPおよびPython:さまざまなパラダイムが説明されています Apr 18, 2025 am 12:26 AM

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPとPythonの選択:ガイド PHPとPythonの選択:ガイド Apr 18, 2025 am 12:24 AM

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

なぜPHPを使用するのですか?利点と利点が説明されました なぜPHPを使用するのですか?利点と利点が説明されました Apr 16, 2025 am 12:16 AM

PHPの中心的な利点には、学習の容易さ、強力なWeb開発サポート、豊富なライブラリとフレームワーク、高性能とスケーラビリティ、クロスプラットフォームの互換性、費用対効果が含まれます。 1)初心者に適した学習と使用が簡単。 2)Webサーバーとの適切な統合および複数のデータベースをサポートします。 3)Laravelなどの強力なフレームワークを持っています。 4)最適化を通じて高性能を達成できます。 5)複数のオペレーティングシステムをサポートします。 6)開発コストを削減するためのオープンソース。

PHPとPython:彼らの歴史を深く掘り下げます PHPとPython:彼らの歴史を深く掘り下げます Apr 18, 2025 am 12:25 AM

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

PHPの影響:Web開発など PHPの影響:Web開発など Apr 18, 2025 am 12:10 AM

phphassiblasifly-impactedwebdevevermentandsbeyondit.1)itpowersmajorplatformslikewordpratsandexcelsindatabase interactions.2)php'sadaptableability allowsitale forlargeapplicationsusingframeworkslikelavel.3)

PHP対Python:ユースケースとアプリケーション PHP対Python:ユースケースとアプリケーション Apr 17, 2025 am 12:23 AM

PHPはWeb開発およびコンテンツ管理システムに適しており、Pythonはデータサイエンス、機械学習、自動化スクリプトに適しています。 1.PHPは、高速でスケーラブルなWebサイトとアプリケーションの構築においてうまく機能し、WordPressなどのCMSで一般的に使用されます。 2。Pythonは、NumpyやTensorflowなどの豊富なライブラリを使用して、データサイエンスと機械学習の分野で驚くほどパフォーマンスを発揮しています。

PHP:サーバー側のスクリプト言語の紹介 PHP:サーバー側のスクリプト言語の紹介 Apr 16, 2025 am 12:18 AM

PHPは、動的なWeb開発およびサーバー側のアプリケーションに使用されるサーバー側のスクリプト言語です。 1.PHPは、編集を必要とせず、迅速な発展に適した解釈言語です。 2。PHPコードはHTMLに組み込まれているため、Webページの開発が簡単になりました。 3。PHPプロセスサーバー側のロジック、HTML出力を生成し、ユーザーの相互作用とデータ処理をサポートします。 4。PHPは、データベースと対話し、プロセスフォームの送信、サーバー側のタスクを実行できます。

PHPとWeb:その長期的な影響を調査します PHPとWeb:その長期的な影響を調査します Apr 16, 2025 am 12:17 AM

PHPは過去数十年にわたってネットワークを形成しており、Web開発において重要な役割を果たし続けます。 1)PHPは1994年に発信され、MySQLとのシームレスな統合により、開発者にとって最初の選択肢となっています。 2)コア関数には、動的なコンテンツの生成とデータベースとの統合が含まれ、ウェブサイトをリアルタイムで更新し、パーソナライズされた方法で表示できるようにします。 3)PHPの幅広いアプリケーションとエコシステムは、長期的な影響を促進していますが、バージョンの更新とセキュリティの課題にも直面しています。 4)PHP7のリリースなど、近年のパフォーマンスの改善により、現代の言語と競合できるようになりました。 5)将来的には、PHPはコンテナ化やマイクロサービスなどの新しい課題に対処する必要がありますが、その柔軟性とアクティブなコミュニティにより適応性があります。

See all articles