ホームページ バックエンド開発 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:2つの一般的なプログラミング言語を比較します PHPとPython:2つの一般的なプログラミング言語を比較します Apr 14, 2025 am 12:13 AM

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHP対Python:違いを理解します PHP対Python:違いを理解します Apr 11, 2025 am 12:15 AM

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHPの現在のステータス:Web開発動向を見てください PHPの現在のステータス:Web開発動向を見てください Apr 13, 2025 am 12:20 AM

PHPは、現代のWeb開発、特にコンテンツ管理とeコマースプラットフォームで依然として重要です。 1)PHPには、LaravelやSymfonyなどの豊富なエコシステムと強力なフレームワークサポートがあります。 2)パフォーマンスの最適化は、Opcacheとnginxを通じて達成できます。 3)PHP8.0は、パフォーマンスを改善するためにJITコンパイラを導入します。 4)クラウドネイティブアプリケーションは、DockerおよびKubernetesを介して展開され、柔軟性とスケーラビリティを向上させます。

PHP:Web開発の重要な言語 PHP:Web開発の重要な言語 Apr 13, 2025 am 12:08 AM

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

PHP対その他の言語:比較 PHP対その他の言語:比較 Apr 13, 2025 am 12:19 AM

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHPの永続的な関連性:それはまだ生きていますか? PHPの永続的な関連性:それはまだ生きていますか? Apr 14, 2025 am 12:12 AM

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

PHP:多くのウェブサイトの基礎 PHP:多くのウェブサイトの基礎 Apr 13, 2025 am 12:07 AM

PHPが多くのWebサイトよりも優先テクノロジースタックである理由には、その使いやすさ、強力なコミュニティサポート、広範な使用が含まれます。 1)初心者に適した学習と使用が簡単です。 2)巨大な開発者コミュニティと豊富なリソースを持っています。 3)WordPress、Drupal、その他のプラットフォームで広く使用されています。 4)Webサーバーとしっかりと統合して、開発の展開を簡素化します。

PHPの目的:動的なWebサイトの構築 PHPの目的:動的なWebサイトの構築 Apr 15, 2025 am 12:18 AM

PHPは動的なWebサイトを構築するために使用され、そのコア関数には次のものが含まれます。1。データベースに接続することにより、動的コンテンツを生成し、リアルタイムでWebページを生成します。 2。ユーザーのインタラクションを処理し、提出をフォームし、入力を確認し、操作に応答します。 3.セッションとユーザー認証を管理して、パーソナライズされたエクスペリエンスを提供します。 4.パフォーマンスを最適化し、ベストプラクティスに従って、ウェブサイトの効率とセキュリティを改善します。

See all articles