ホームページ バックエンド開発 PHPの問題 PHPでエラープロンプトをブロックする方法

PHPでエラープロンプトをブロックする方法

Jul 15, 2021 pm 07:57 PM
php

方法: 1. エラー制御演算子「@」を使用し、PHP 式の前に配置すると、生成される可能性のあるエラー メッセージは無視されます。 2. error_reporting() 関数を使用します; 3. 「php.ini」ファイルで、「display_errors」項目の値を「Off」に設定します。

PHPでエラープロンプトをブロックする方法

このチュートリアルの動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューター

エラーをマスクする 3 種類の PHP メソッド:

  • #エラー制御演算子を使用する:

  • #エラーをマスクするには error_reporting () 関数を使用します。

  • display_errors パラメーターを通じてエラーをマスクします

1. エラー制御演算子を使用します。 @

PHP は、エラー制御演算子

@ の使用をサポートしています。これを PHP 式の前に置くと、式によって生成されるエラー メッセージは無視されます。

set_error_handler() でカスタム エラー処理関数を設定した場合でも、このエラー処理関数は引き続き呼び出されます。また、

@ がエラー ステートメントの前に使用されている場合、エラー処理関数は戻り値を返します。 0.

演算子は式に対してのみ有効であることに注意してください。簡単に言えば、どこかから値を取得できる場合は、その値の前に

@ 演算子を追加できます。たとえば、# 演算子は、変数、関数、インクルード呼び出し、定数などの前に使用できますが、関数やクラスの定義の前に配置したり、条件構造内で使用したりすることはできません。 if ステートメントや foreach ステートメントなど。 #@ 演算子は、プログラムの終了を引き起こす可能性のある重大なエラーにも有効です。つまり、存在しない関数呼び出しの前に @ が使用されている場合、または文字が間違っている場合、 「抑制されています。」というエラーメッセージが表示されると、プログラムはプロンプトを表示せずにそこで終了します。

[例] @ エラー制御演算子を使用して、コード内のエラーをマスクします。

1

2

3

<?php

    $link = @mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db") or die(&#39;数据库连接失败!&#39;);

?>

ログイン後にコピー

実行結果は次のとおりです: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>数据库连接失败!</pre><div class="contentsignin">ログイン後にコピー</div></div>

2.

error_reporting()

関数を使用してエラーをシールドします

PHP には多くのエラー レベルがあります。PHP が報告するエラーの種類を設定するには、error_reporting() 関数を使用します。関数の構文形式は次のとおりです:

1

<strong>error_reporting([int $level])</strong>

ログイン後にコピー
パラメータ $level は、エラー レベルを設定します。 $level が 0 に設定されている場合、すべての PHP エラーが閉じられます。レポート; -1 に設定されている場合、すべてのエラー レポートが返されます。

PHP のエラーの種類は次の表のとおりです。

常量说明
1E_ERROR致命的运行时错误,一般是不可恢复的情况,例如内存分配导致的问题,后果是导致脚本终止、不再继续运行。
2E_WARNING运行时警告(非致命错误),仅给出提示信息,但是脚本不会终止运行。
4E_PARSE编译时语法解析错误,仅由分析器产生。
8E_NOTICE运行时通知,表示脚本遇到可能会表现为错误的情况,但是在可以正常运行的脚本里面也可能会有类似的通知。
16E_CORE_ERROR在 PHP 初始化启动过程中发生的致命错误,类似 E_ERROR,但是是由 PHP 引擎核心产生的。
32E_CORE_WARNINGPHP 初始化启动过程中发生的警告(非致命错误),类似 E_WARNING ,但是是由 PHP 引擎核心产生的。
64E_COMPILE_ERROR致命编译时错误,类似 E_ERROR,但是是由 Zend 脚本引擎产生的。
128E_COMPILE_WARNING编译时警告(非致命错误),类似 E_WARNING,但是是由 Zend 脚本引擎产生的。
256E_USER_ERROR用户产生的错误信息,类似 E_ERROR,但是是由用户自己在代码中使用 PHP 函数 trigger_error() 来产生的。
512E_USER_WARNING用户产生的警告信息,类似 E_WARNING,但是是由用户自己在代码中使用 PHP 函数 trigger_error() 来产生的。
1024E_USER_NOTICE用户产生的通知信息,类似 E_NOTICE,但是是由用户自己在代码中使用 PHP 函数 trigger_error() 来产生的。
1024E_STRICT启用 PHP 对代码的修改建议,以确保代码具有最佳的互操作性和向前兼容性。
2048E_RECOVERABLE_ERROR可被捕捉的致命错误,表示发生了一个可能非常危险的错误,但是还没有导致 PHP 引擎处于不稳定的状态。如果该错误没有被用户自定义句柄捕获,将成为一个 E_ERROR,从而使脚本终止运行。
8192E_DEPRECATED运行时通知,启用后将会对在未来版本中可能无法正常工作的代码给出警告。
16384E_USER_DEPRECATED用户产生的警告信息,类似 E_DEPRECATED,但是是由用户自己在代码中使用 PHP 函数 trigger_error() 来产生的。
30719E_ALLE_STRICT 除外的所有错误和警告信息。

【示例】使用 error_reporting() 函数屏蔽代码中的错误。

1

2

3

4

<?php

    error_reporting(0);

    $link = mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db") or die(&#39;数据库连接失败!&#39;);

?>

ログイン後にコピー

3、通过 display_errors 参数屏蔽错误

这种方法应该是最彻底的一种解决办法,因为前两种方法只能作用于单行或者单个文件,而这个则是作用于所有的 PHP 文件。

具体的操作方法就是,打开 php.ini 配置文件,在其中搜索 display_errors,然后将 display_errors 的值设置为 Off 即可关闭所有的 PHP 错误报告。如下所示:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

; This directive controls whether or not and where PHP will output errors,

; notices and warnings too. Error output is very useful during development, but

; it could be very dangerous in production environments. Depending on the code

; which is triggering the error, sensitive information could potentially leak

; out of your application such as database usernames and passwords or worse.

; For production environments, we recommend logging errors rather than

; sending them to STDOUT.

; Possible Values:

;   Off = Do not display any errors

;   stderr = Display errors to STDERR (affects only CGI/CLI binaries!)

;   On or stdout = Display errors to STDOUT

; Default Value: On

; Development Value: On

; Production Value: Off

; http://php.net/display-errors

display_errors = Off

ログイン後にコピー

推荐学习:《PHP视频教程

以上がPHPでエラープロンプトをブロックする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

この章では、CakePHP の環境変数、一般設定、データベース設定、電子メール設定について理解します。

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

See all articles