目次
PHPプログラムのさまざまなデバッグ方法の紹介、PHPプログラムのデバッグ
ホームページ バックエンド開発 PHPチュートリアル PHP プログラムのさまざまなデバッグ方法の紹介、PHP プログラムのデバッグ_PHP チュートリアル

PHP プログラムのさまざまなデバッグ方法の紹介、PHP プログラムのデバッグ_PHP チュートリアル

Jul 13, 2016 am 10:14 AM
php プログラム デバッグ

PHPプログラムのさまざまなデバッグ方法の紹介、PHPプログラムのデバッグ

デバッグの定義: プログラムが適切に動作できるように、特定の方法を使用してプログラム内の欠陥の数を見つけて減らすこと。
ここでは、PHP プログラムのデバッグ方法に関するいくつかの経験を紹介します。

1. PHP独自のデバッグ機能

1. 内蔵エラー報告機能

2 つの用語: 開発環境は開発者が開発およびデバッグする環境であり、運用環境はエンド顧客が使用するオンライン環境です。 開発環境と本番環境では、エラー報告機能を個別に設定する必要があります。

(1) 開発環境

開発環境ではエラー報告を有効にする必要があります。 php.ini の設定項目と説明は次のとおりです。


コードをコピーします コードは次のとおりです:
; このディレクティブはエラー報告レベルを設定します。
; 開発値: E_ALL | E_STRICT (コーディング標準を含むすべてのエラー、警告、通知を表示します)
エラー報告 = E_ALL |
; このディレクティブは、PHP がエラーを出力するかどうか、およびどこにエラーを出力するかを制御します。 ; エラー出力も開発中に非常に役立ちます。 ; 開発値: オン
display_errors = オン



これにより、開発プロセス中にできるだけ早くエラーを見つけることができます。

たとえそれが低レベルのエラー「通知: 未定義の変数: E:phpspacetest.php の 14 行目」である場合でも、未定義の変数の使用によりバグが隠れることがよくあります。

オープンソースのクラス ライブラリを導入したときに、低レベルのエラーが大量にスローされたらどうなるのかと疑問に思うかもしれません。一般に、コード品質が良好なクラス ライブラリは、「通知」レベルのエラーを報告しません。したがって、これはクラス ライブラリの品質を識別する方法でもあります。

(2) 本番環境

本番環境ではエラーを直接出力できませんが、php.iniの設定項目と説明は以下の通りです。

コードをコピーします

コードは次のとおりです:

; 本番環境では非常に危険な可能性があります。 ; エラーは実稼働サーバーに記録されることをお勧めします ; エラーが STDOUT に送信されます。 display_errors = オフ
; PHP はエラーを表示するだけでなく、
などの場所にエラーを記録することもできます。 ; サーバー固有のログ、STDERR、または error_log で指定された場所 ; ディレクティブは以下にありますが、プロダクションではエラーが表示されるべきではありません
; サーバーは引き続き監視する必要があり、ログ記録はそのための優れた方法です。 ; 生産値: オン
log_errors = オン
; 指定されたファイルにエラーを記録します。 error_log = /path/to/php_error.log




もちろん、ファイルへのログの書き込みはオプションにすぎません。他の設定もあります。マニュアルを参照してください。

実稼働環境は顧客にサービスを提供するためのものであり、ブレークポイントや印刷などを実行することはできないため、ログを選択することをお勧めします。


2. 他の言語機能の使用

(1) エラー制御演算子「@」の使用を減らす

その機能は、PHP 式の前に「@」を配置することであり、式によって生成される可能性のあるエラー メッセージは無視されます。

この式に欠陥が発生した場合、PHP の出力にはエラーが表示されないため、デバッグが難しくなります。したがって、できる限り使用しないでください。

(2) 一部の関数には独自のデバッグ機能があります

たとえば、次のコード行:

コードをコピーします

コードは次のとおりです:

$fp = fsockopen(“www.example.com”, 80, $errno, $errstr, 30);

開発者はデバッグ中に $fp が空で接続が失敗すると判断しましたが、なぜ接続が失敗するのでしょうか? この関数は PHP に付属しており、これ以上詳しくデバッグすることはできません。したがって、一般に、そのような関数 (主にネットワーク通信タイプ) は、独自のデバッグ パラメーター $errno および $errstr を提供します。以下を追加できます:


コードをコピーします
コードは次のとおりです:

if (!$fp) echo “$errstr ($errno)
n”;

接続失敗の理由がわかります。

これらの関数は、fsockopen、pfsockopen、stream_socket_server、stream_socket_client などです。

mysql_errno、socket_last_error、socket_strerror など、関数のデバッグに使用される関数もいくつかあります。

これらを理解し、遭遇したときにいつでも使用する必要があります。

2. デバッグツールを導入します

複雑な問題が発生した場合は、デバッグ ツールを使用できます。より成熟したものには、Xdebug や ZendDebugger などがあります。

Xdebug を例に挙げると、印刷出力スタイルと配列レベル、スタック エラー追跡、関数呼び出し追跡、コード実行カバレッジ分析、プログラム プロファイリング、リモート デバッグの制御が可能です。詳細については、http://xdebug.org/docs/ を参照してください。

Xdebug の最初の 2 つの関数は、デバッグをより便利にするために PHP の元のデバッグ関数を改良したものです。

デバッグできない複雑な問題はビジネス上の問題である可能性があります。ビジネス ロジックのデバッグについても以下で説明します。

3. ビジネスロジックエラーのデバッグ

PHP スクリプトがエラーなしで実行される場合、それは文法的なエラーがないということだけであり、ビジネス ロジックにエラーがないことを意味するわけではありません。

多くのビジネス ロジック エラーは構文エラーには反映されませんが、デバッグの考え方は PHP に付属するデバッグ機能と似ています。

いくつかの方法をご紹介します。

1. 最も基本的なデバッグ方法

まず、プログラムの期待される結果と、期待を満たしていない現在のプログラムの結果の 2 つを決定します。 両方の結果に関連するコード スニペットを探します
これらのコード スニペットを読んで、「肉眼で」エラーを見つけてみてください。 見つからない場合は、いくつかのキー変数を出力し、その値が正しいかどうかを確認して、エラーが発生した場所を特定する必要があります。 何度か試行すると、最終的にエラーが発生したポイントを特定できます。

Xdebug などのツールを使用して、変数値の変更を表示したり、デバッグ用のブレークポイントを設定したりすることもできます。

2. 操作ログを記録する

一部の複雑または特殊なビジネスには、上記の方法は適していません。たとえば、中断できないバックグラウンドで実行中のスクリプトなどです。このような場合、実行ログを記録する方が適切です。

ログに保存するポイントは慎重に選択してください。ビジネス上でより重要なポイントに加えて、通常、ネットワーク接続や通信、システム権限の問題など、エラーが発生する可能性が高い領域もあります。

3. 単体テスト

最初のポイントのようにデバッグ後にテストコードを捨てるのではなく、そのコードを使ってテストします。テスト駆動開発。

このトピックは比較的大きなものですが、ここで言及するのが適切です。興味のある学生はさらに詳しく学ぶことができます。

4. 機能しないエラーのデバッグ

非機能エラー: メモリ オーバーフローによるプログラムのハング、効率の問題によるプログラムの非常に遅い、無限ループなど。

これらの問題については、「肉眼」でコードをチェックするのはあまりにも非効率です。

そのため、デバッグ ツールを使用してプログラムのプロファイリングを実行し、プログラムのボトルネックをチェックアウトできます。

PHPプログラムをデバッグする方法

ある程度の基礎が無い場合、このような成熟したプログラムから「データベースステートメントの使い方」を学ぶことはお勧めできません。一般的に、さまざまな使い方や機能は、ある程度の基礎がないと理解するのが難しいです


PHPプログラムをデバッグする方法

目的: php+cgi+asp+jsp などをサポートするために PHP を実行するための環境を構成します (IIS+PHP+MYSQL+CF+Perl)。
オペレーティング システム: Windows2000 Advanced Server (sp3) 簡体字中国語バージョン
必要な関連ソフトウェア:
1: php -4.3.0-Win32.zip、ファイルをアップロードするのは不便です。
2 つ: ActivePerl-5.6.1.635-MSWin32-x86.msi。元のコードをダウンロードしないでください。これをサポートするためにインストールする必要はありません。 cgi をサポートしたくない場合は、このインストールをダウンロードする必要はありません。3 つ目: mysql-4.0.7-gamma-win.zip。4 つ目: MM ColdFusion MX (どちらでも構いません)これを持っているかどうかは関係ありません。主に PHP+MYSQL をサポートしています)
すべてが私のマシン上のディレクトリに基づいていると仮定します。

php-4.3.0-Win32.zipをL:\phpディレクトリに解凍します
phpディレクトリをコピーします php4ts.dllをwinnt\system32ディレクトリにダウンロードします
php.ini.distをwinntディレクトリにコピーし、拡張子を削除します.dist を取得して php.ini ファイルを取得し、メモ帳で開き、次の 2 つのパラメータを変更します:
1. extension_dir を検索し、PHP 拡張機能のディレクトリを指定します。たとえば、私のディレクトリは L:\PHP\extensions です。これ:
extension_dir = L:\PHP\extensions これらの拡張機能は、いくつかの拡張ライブラリをサポートしたい場合に変更できます。
php .ini を保存します。

mysql をインストールします。
mysql-4.0.7-gamma-win.zip 圧縮パッケージを開きます。
setup.exe をダブルクリックしてプログラムを実行します。インストール プロセス中、mysql のインストール ディレクトリの選択に注意してください (もちろん、デフォルトのディレクトリを選択することもできます)。たとえば、L:\ にインストールしました。 mysql ディレクトリに移動し、L:\mysql\bin\mysqld-nt.exe を実行します。実際には、インストールの完了後にシステムが自動的にサービスを開始します。不明な場合は、「サービス」に移動して mysql が開始されているかどうかを確認してください。

M$ Office をインストールします。ASP をサポートするためにこれをインストールする必要があるかどうかはわかりません。とにかく、システムをインストールした後、すべての Office をインストールしました。サポートしたくない場合は、ASP はそれを無視できます)

Perl インタープリターをインストールします:
ActivePerl-5.6.1.635-MSWin32-x86.msi を実行し、インストール プロセス中に L:\perl ディレクトリを選択します。もちろんデフォルトを使用できます。

MM の ColdFusion MX をインストールするには、L:\ColdFusionMX ディレクトリにインストールしました

サーバーを設定しています、ふふふ、これを書いた後に絵を描くために Photoshop を開かなければなりませんでした、言うのは難しいです

「スタート」-「プログラム」をクリックします-「管理ツール-》インターネット サービス マネージャー

このリンクをクリックすると大きな画像が表示されます

「既定の Web サイト」をクリックして右クリックし、「プロパティ」を選択してダイアログ ボックスを開きます

このリンクをクリックして表示します大きな画像

[ホーム ディレクトリ] をクリックし、次の設定を行います。 [ローカル パス] で、サイトのルート ディレクトリとして使用するマシン上のフォルダーを選択します。たとえば、私の場合は L:\WEB です。以下に示すように、右下の「設定」をクリックすると、新しいダイアログボックスが表示されます

新しいダイアログボックスで「追加」を選択します

L:\php\sapi\php4isapi.dllを参照して選択します実行可能ファイル。参照ダイアログ ボックスで、ファイルの種類として * を選択します。選択しないと、L:\php\sapi\ ディレクトリに .dll ファイルが表示されません。以下に示すように、拡張子に php を追加します。

「OK」をクリックします

L:\ perl...残りのテキストを追加します>>




http://www.bkjia.com/PHPjc/907282.html

www.bkjia.com

http://www.bkjia.com/PHPjc/907282.html技術記事 PHP プログラムのデバッグのさまざまな方法の紹介。PHP プログラムのデバッグの定義: 特定の方法を使用してプログラム内の欠陥を見つけ、正常に動作できるようにすること。 ここでそれについて話しましょう...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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でHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

母音を文字列にカウントするPHPプログラム 母音を文字列にカウントするPHPプログラム Feb 07, 2025 pm 12:12 PM

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? Apr 03, 2025 am 12:03 AM

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。

PHPとPython:2つの一般的なプログラミング言語を比較します PHPとPython:2つの一般的なプログラミング言語を比較します Apr 14, 2025 am 12:13 AM

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

アクション中のPHP:実際の例とアプリケーション アクション中のPHP:実際の例とアプリケーション Apr 14, 2025 am 12:19 AM

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

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

See all articles