サーチ…
ダンプ変数
var_dump
関数は、デバッグのために変数(型と値)の内容をダンプできます。
例:
$array = [3.7, "string", 10, ["hello" => "world"], false, new DateTime()];
var_dump($array);
出力:
array(6) {
[0]=>
float(3.7)
[1]=>
string(6) "string"
[2]=>
int(10)
[3]=>
array(1) {
["hello"]=>
string(5) "world"
}
[4]=>
bool(false)
[5]=>
object(DateTime)#1 (3) {
["date"]=>
string(26) "2016-07-24 13:51:07.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(13) "Europe/Berlin"
}
}
エラーの表示
PHPでページにランタイムエラーが表示されるようにするには、 php.ini
またはini_set
関数のどちらかでdisplay_errors
を有効にする必要があります。
ビット単位の演算子を使用して結合されたE_*
定数を受け入れるerror_reporting
(またはini)関数を使用して、表示するエラーを選択できます。
PHPは、 html_errors
設定に応じて、テキストまたはHTML形式でエラーを表示できます。
例:
ini_set("display_errors", true);
ini_set("html_errors", false); // Display errors in plain text
error_reporting(E_ALL & ~E_USER_NOTICE); // Display everything except E_USER_NOTICE
trigger_error("Pointless error"); // E_USER_NOTICE
echo $nonexistentVariable; // E_NOTICE
nonexistentFunction(); // E_ERROR
プレーンテキスト出力: (HTML形式は実装によって異なります)
Notice: Undefined variable: nonexistentVariable in /path/to/file.php on line 7
Fatal error: Uncaught Error: Call to undefined function nonexistentFunction() in /path/to/file.php:8
Stack trace:
#0 {main}
thrown in /path/to/file.php on line 8
注記: php.iniでエラー報告を無効にして実行時に有効にすると、実行時設定が適用される前にエラーが発生するため、解析エラーなどのエラーが表示されません。
error_reporting
を処理する一般的な方法は、開発中にE_ALL
定数をE_ALL
て完全に有効にし、スクリプトの内部を隠すために、プロダクションステージでdisplay_errors
でそれを公開することを無効にすることです。
phpinfo()
警告
phpinfo
は開発環境でのみ使用する必要があります。 phpinfo
を含むコードを実稼働環境にリリースしない
前書き
これは、特にバグを追跡する際に、作業しているPHP環境(OS、設定、バージョン、パス、モジュール)を理解するのに便利なツールになると言いました。それは単純な組み込み関数です:
phpinfo();
それには、出力をカスタマイズできるようにする1つのパラメータ$what
があります。デフォルトはINFO_ALL
、すべての情報を表示します。開発中にPHPの現在の状態を表示するために一般的に使用されます。
INFO_*
定数をビット演算子と組み合わせて渡すと、カスタマイズされたリストが表示されます。
あなたはきれいにフォーマットされた詳細な外観のためにブラウザでそれを実行することができます。それはまたにあなたはパイプにそれをすることができますPHP CLIで働くless
簡単にビューのために。
例
phpinfo(INFO_CONFIGURATION | INFO_ENVIRONMENT | INFO_VARIABLES);
これにより、PHPディレクティブ( ini_get
)、環境( $_ENV
)、および事前定義された変数のリストが表示されます。
Xdebug
Xdebugは、デバッグとプロファイリング機能を提供するPHP拡張モジュールです。
これはDBGpデバッグプロトコルを使用します。
このツールにはいくつかの素晴らしい機能があります:
- エラー時にトレースをスタックする
- 最大ネストレベル保護と時間トラッキング
- 変数を表示するための標準
var_dump()
関数の便利な置き換え - パラメータと戻り値を含むすべての関数呼び出しを異なる形式のファイルに記録することができます
- コードカバレッジ分析
- プロファイリング情報
- リモートデバッグ(PHPスクリプトの実行とやりとりするデバッガクライアント用のインターフェイスを提供)
あなたが見ることができるように、この拡張は開発環境に完全に適しています。特にリモートデバッグ機能は、多数のvar_dumpなしでPHPコードをデバッグし、 C++
やJava
言語のような通常のデバッグプロセスを使用するのに役立ちます。
通常、この拡張モジュールのインストールは非常に簡単です。
pecl install xdebug # install from pecl/pear
そしてphp.iniにそれを有効にしてください:
zend_extension="/usr/local/php/modules/xdebug.so"
このツールを使用するときは、次のことを覚えておいてください。
XDebugは本番環境には適していません
phpversion()
前書き
さまざまなライブラリや関連する要件を扱う際には、現在のPHPパーサーのバージョンやそのパッケージのバージョンを知る必要があることがよくあります。
この関数は、拡張名の形式で単一のオプションのパラメータphpversion('extension')
ます。問題の拡張がインストールされている場合、関数はバージョン値を含む文字列を返します。ただし、拡張機能がインストールされていないFALSE
はFALSE
が返されFALSE
。拡張名が指定されていない場合、関数はPHPパーサ自体のバージョンを返します。
例
print "Current PHP version: " . phpversion();
// Current PHP version: 7.0.8
print "Current cURL version: " . phpversion( 'curl' );
// Current cURL version: 7.0.8
// or
// false, no printed output if package is missing
エラー報告(両方を使用)
// this sets the configuration option for your environment
ini_set('display_errors', '1');
//-1 will allow all errors to be reported
error_reporting(-1);