最適化とデバッグのテクニックと PHP プログラマーのためのテクニック_PHP チュートリアル
この記事では、Apache や PHP でエラー報告を有効にする方法や、単純な PHP スクリプトに print ステートメントを戦略的に配置してより困難なバグの原因を見つける方法など、PHP アプリケーションをデバッグするさまざまな方法について説明します。また、リアルタイム構文解析機能を備えた柔軟な開発環境である Eclipse 用の PHPEclipse プラグイン、および PHPEclipse 用の DBG デバッガー拡張機能についても学習します。
はじめに
コーディング時に大幅な時間を節約できる PHP デバッグ手法が多数あります。効果的かつ基本的なデバッグ手法は、エラー報告を有効にすることです。もう 1 つの少し高度なテクニックには、print ステートメントの使用が含まれます。これは、実際に画面に表示される内容を表示することで、見つけにくいバグを正確に特定するのに役立ちます。 PHPEclipse は、一般的な構文エラーを強調表示する Eclipse プラグインで、デバッガーと組み合わせて使用してブレークポイントを設定できます。
設定
この記事で説明されている概念を学ぶには、PHP、Web サーバー、および Eclipse が必要です。デバッガー拡張機能は、PHP バージョン V5.0.3 をサポートします。
PHP で作成されたページを解析してブラウザに表示するには、Web サーバーが必要です。この記事ではApache2を使用しています。ただし、どの Web サーバーでも十分です。
この記事で紹介したデバッグ手法の一部を利用するには、Eclipse V3.1.1 とプラグイン PHPEclipse V1.1.8 をインストールする必要があります。 Eclipse には Java® テクノロジが必要なため、それもダウンロードする必要があります。
PHP デバッガ拡張モジュールも必要です。取り付けは少し面倒です。デバッガー拡張機能のインストール手順に慎重に従ってください。次に、php.ini ファイル内の、PHP 拡張機能のロードと構成を必要とする行をコメント アウトします。デバッガを使用する必要がある場合は、コメントを解除してください。
ダウンロード情報については、「リソース」を参照してください。次にエラーメッセージについてです。
エラーメッセージ
エラー メッセージは、開発者にとっての防御の最前線です。エラー メッセージを表示するように構成されていないサーバー上で PHP でコードを開発したい人はいません。ただし、コードをデバッグし、実行する準備ができたら、エラー レポートがオフになっていることを確認する必要があります。これは、サイト訪問者にエラー メッセージが表示されることを望まないためです。これにより、エラー メッセージを悪用するのに十分な情報が提供されてしまいます。サイトの弱点とサイトをハッキングします。
エラー メッセージは、エラーをスローまたは生成した正しいコード行を示すため、有利に使用することもできます。このように、デバッグは、生成されたエラーが表示される行番号をブラウザーで調べ、コード内のその行を検査することになります。後で、PHPEclipse プラグインが、その場で構文エラーに下線を引いたり、ファイルを保存するときに赤い "x" でマークしたりすることで、開発やデバッグ中に非常に役立つことがわかります。
まず、エラー報告を有効にし、php.ini ファイルでエラー報告のレベルを設定する方法を見てみましょう。次に、Apache の構成ファイルでこれらの設定をオーバーライドする方法を学びます。
PHPエラーレポート
php.ini ファイルには多くの構成設定があります。 Linux に PHP および Apache 2 をインストールする手順 (「参考文献」を参照) に記載されているように、php.ini ファイルを設定し、適切なディレクトリに配置しておく必要があります。 PHP アプリケーションをデバッグするときに注意すべき構成変数が 2 つあります。 2 つの変数とそのデフォルト値は次のとおりです:
リーリー |
これら 2 つの変数の現在のデフォルト値は、php.ini ファイル内で検索すると見つかります。 display_errors 変数の目的は明らかです。この変数は、エラーを表示するかどうかを PHP に指示します。デフォルト値はオフです。ただし、開発プロセスを容易にするために、この値をオンに設定します。
リーリー |
error_reporting 変数のデフォルト値は E_ALL です。この設定では、不適切なコーディング方法から無害なヒント、エラーに至るまで、あらゆるものが表示されます。 E_ALL は、ブラウザの出力を混乱させる小さな事柄 (変数が初期化されていないなど) についてのヒントも画面上に表示するため、開発目的には少し粒度が高すぎます。私が知りたいのはエラーと不適切なコーディング方法だけであり、無害なヒントは知りたいわけではありません。したがって、error_reporting のデフォルト値を次の値に置き換えてください:
リーリー |
重新启动 Apache,就全部设置好了。接下来,将学习如何在 Apache 上做同样的事。
服务器上的错误报告
依赖于 Apache 正在做的工作,在 PHP 中打开错误报告可能没法工作,因为在计算机上可能有多个 PHP 版本。有时很难区分 Apache 正在使用哪个 PHP 版本,因为 Apache 只能查看一个 php.ini 文件。不知道 Apache 正在使用哪个 php.ini 文件配置自己是一个安全问题。但是,有一种方法可以在 Apache 中配置 PHP 变量,从而保证设置了正确的出错级别。
而且,最好知道如何在服务器端设置这些配置变量,以否决或抢占 php.ini 文件,从而提供更高级别的安全性。
在配置 Apache 时,应该已经接触过
要做在 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。
接下来,要在服务器上测试错误报告。
测试错误报告
如果启动了错误报告,会节约许多时间。PHP 中的错误会指向代码中的错误。请创建一个简单的 PHP 文件 test.php,并像清单 1 所示一样定义它。
清单 1. 一个最適化とデバッグのテクニックと PHP プログラマーのためのテクニック_PHP チュートリアル的简单 PHP
<?php print("The next line generates an error.<br>"); printaline("PLEASE?"); print("This will not be displayed due to the above error."); ?> |
最初の print() ステートメントは、その内容を Web ブラウザーに表示します。ただし、2 番目のステートメントではエラーが生成され、Web ページに表示されます。これにより、図 1 に示すように、最後の print() ステートメントが機能しなくなります。
図 1. 生成エラー

エラー報告が有効になりました。次に、print ステートメントを使用してアプリケーションのデバッグを支援します。
print ステートメントの紹介
アプリケーションの機能上のバグはエラーを生成しないため、PHP アプリケーションをデバッグするために print または die ステートメントを適切に配置および使用する方法に関する知識は、あらゆるデバッグ戦略において大きな資産となります。 print ステートメントを使用すると、コード内で問題のあるステートメントの位置を絞り込むことができます。これらのステートメントには構文エラーはなく、バグではありませんが、コードの機能という点ではバグです。これらはエラーをスローしないため、発見してデバッグするのが最も難しいバグです。分かっているのは、ブラウザに表示されているコンテンツが希望のものではないか、データベースに保存したいコンテンツがまったく保存されていないことだけです。
GET リクエストを通じて送信されたフォーム データを処理しており、ブラウザに情報を表示したいと考えていますが、何らかの理由でデータが正しく送信されないか、GET リクエストからデータを正しく読み取ることができないとします。このタイプの問題をデバッグするには、print() または die() ステートメントを使用して変数の値が何であるかを知ることが重要です。
die() ステートメントはプログラムの実行を停止し、Web ブラウザにテキストを表示します。 die() ステートメントは、コードをコメントアウトしたくない場合や、エラーの前の情報とエラー メッセージのみを表示し、それ以降の情報は表示したくない場合に特に便利です。
PHP の print ステートメントを使用してこの概念をテストしてみましょう
デバッグには print ステートメントを使用します
プログラマーだった頃、Linux でアプリケーションを開発していましたが、どこにバグがあるのかを教えてくれる便利な GUI がなかったので、プログラムに print ステートメントを追加すればするほど、より多くの機能が失われることがすぐにわかりました。アプリケーションを使用すると、バグの範囲が 1 行に狭まる可能性が高くなります。別の PHP ファイル test2.php を作成し、リスト 2 に示すように定義します。
リスト 2. GET 経由で送信されたすべての変数を表示する
<?php $j = ""; print("この関数に送信されたすべての変数を取得しましょう "); print("スクリプト v </p> <p align="left"></p><div style="display:none;"> <span id="url" itemprop="url">http://www.bkjia.com/PHPjc/508474.html</span><span id="indexUrl" itemprop="indexUrl">www.bkjia.com</span><span id="isOriginal" itemprop="isOriginal">true</span><span id="isBasedOnUrl" itemprop="isBasedOnUrl">http://www.bkjia.com/PHPjc/508474.html</span><span id="genre" itemprop="genre">技術記事</span><span id="description" itemprop="description">この記事では、Apache や PHP でのエラー報告の有効化、単純な PHP スクリプトに print ステートメントを戦略的に配置することによる... </span> </div> の検索など、PHP アプリケーションをデバッグするさまざまな方法について説明します。 <div class="art_confoot"></div> |

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

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

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

PHPは死んでいません。 1)PHPコミュニティは、パフォーマンスとセキュリティの問題を積極的に解決し、PHP7.xはパフォーマンスを向上させます。 2)PHPは最新のWeb開発に適しており、大規模なWebサイトで広く使用されています。 3)PHPは学習しやすく、サーバーはうまく機能しますが、タイプシステムは静的言語ほど厳格ではありません。 4)PHPは、コンテンツ管理とeコマースの分野で依然として重要であり、エコシステムは進化し続けています。 5)OpcacheとAPCを介してパフォーマンスを最適化し、OOPと設計パターンを使用してコードの品質を向上させます。

PHPとPythonには独自の利点と短所があり、選択はプロジェクトの要件に依存します。 1)PHPは、Web開発に適しており、学習しやすく、豊富なコミュニティリソースですが、構文は十分に近代的ではなく、パフォーマンスとセキュリティに注意を払う必要があります。 2)Pythonは、簡潔な構文と学習が簡単なデータサイエンスと機械学習に適していますが、実行速度とメモリ管理にはボトルネックがあります。

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

PHPはMySQLIおよびPDO拡張機能を使用して、データベース操作とサーバー側のロジック処理で対話し、セッション管理などの関数を介してサーバー側のロジックを処理します。 1)MySQLIまたはPDOを使用してデータベースに接続し、SQLクエリを実行します。 2)セッション管理およびその他の機能を通じて、HTTPリクエストとユーザーステータスを処理します。 3)トランザクションを使用して、データベース操作の原子性を確保します。 4)SQLインジェクションを防ぎ、例外処理とデバッグの閉鎖接続を使用します。 5)インデックスとキャッシュを通じてパフォーマンスを最適化し、読みやすいコードを書き、エラー処理を実行します。

PHPで前処理ステートメントとPDOを使用すると、SQL注入攻撃を効果的に防ぐことができます。 1)PDOを使用してデータベースに接続し、エラーモードを設定します。 2)準備方法を使用して前処理ステートメントを作成し、プレースホルダーを使用してデータを渡し、メソッドを実行します。 3)結果のクエリを処理し、コードのセキュリティとパフォーマンスを確保します。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

WebStorm Mac版
便利なJavaScript開発ツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター
