PHPで、ステップ実行とか、変数の値を確認したいということはありませんか?
Php Stormとxdebugを使用すると、上記のやりたいことが可能です。
これを使用すれば、var_dump()を使用して、変数の中身を表示する必要はありません!
つまり、var_dump()を消したり、つけたり、消したり、つけたり・・・などの作業が省け、
デバックの精度と作業工数の軽減を目指したいと思います。
目次
必要な環境
1.xdebug
2.phpstorm
3.CentOS5,6
設定方法について。
1.xdebugを、peclコマンドでインストールします。
2.xdebug.iniファイルを作成し、動作環境の設定をします。
3.PhpStromに、xdebugの設定をします。
1.xdebugを、peclコマンドでインストールします
peclインストール
pecl(ピクル) を使用するには、php-develがインストールされていないと動作しないので、まずは、php-develがインストールされているか確認します。
pecl(ピクル:PHP Extension Community Library) PHPで利用できる拡張ライブラリ(パッケージ)を提供しているサービス。
確認コマンド
yum list installed | grep php-devel
確認結果
例)
php-devel.x86_64 5.3.3-46.el6_6 @updates
インストールされていなければ、php-develをインストールします。
yum install php-devel yum install php-pear yum install gcc
xdebug をインストールします。
php5.4を境にインストール方法が異なります。
php.5.4以上の場合
pecl install xdebug
php.5.4未満の場合
pecl install xdebug-2.2.7
phpバージョンの調べ方は、php -v。
上記のコマンドを実行するとxdebug.soが作成されるので、xdebug.iniで設定する。
soファイルは共用オブジェクトファイルのこと。
2.xdebug.iniファイルを作成し、動作環境の設定をします。
2.1 xdebugの環境設定を行う。
/etc/php.d ディレクトリ内に、xdebug.ini を作成して、下記のとおり記載する。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー ; xdebug.soのパスは 適宜変更する。 zend_extension="/usr/lib64/php/modules/xdebug.so" xdebug.remote_enable=1 xdebug.remote_port="9000" xdebug.default_enable=1 xdebug.remote_autostart=1 xdebug.remote_connect_back=1 xdebug.profiler_enable=1 xdebug.profiler_output_dir="/tmp" xdebug.max_nesting_level=1000 xdebug.idekey = "PHPSTORM" ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
設定の意味:
zend_extension=”/usr/lib64/php/modules/xdebug.so”
xdebug.soが、どこに出来たか分からない??
そういうときは、find関数を使用してファイルを探してみてください。
1. [ cd / ]コマンド実行。
find関数は、カレントディレクトリ以下のファイルを対象するので、
一番上のルートに設定することにより、全ファイルを操作の対象としています。
2.find -name ‘xdebug.so’ を実行すると保存場所が分かります。
例)
./usr/lib64/php/modules/xdebug.so
リモートデバック機能を有効に
xdebug.remote_enable=1
リモートデバックからホストマシンに接続を待ち受ける際に使用するポート設定
xdebug.remote_port=”9000″
常にリモートデバックを行う
xdebug.remote_autostart=1
接続してきたクライアントにレスポンスを返す場合は、有効にする。
xdebug.remote_connect_back=1
エラーイベントにデフォルトで表示する場合
xdebug.default_enable=1
xdebugの動作状況のプロファイル機能を有効にする。
xdebug.profiler_enable=1
プロファイルの出力先
xdebug.profiler_output_dir=”/tmp”
無限ループが発生した場合に、プログラムの実行回数
xdebug.max_nesting_level=1000
リモート接続する際に指定するキー
xdebug.idekey = “PHPSTORM”
参考URL
https://xdebug.org/docs/all
2.2 service httpd restart で、apache再起動
3.PhpStromに、xdebugの設定をします。
1.RUN>Edit Configration..
2.+ボタンで、PHP Remote Debugをクリック
3.Servers (…)をクリック
xdebugを設定したServerを追加。
例)
Host:192.168.33.10
Port: 80
Use Path *** にチェック
ホストOSのFile/DirectoryとゲストOSドキュメントルートの関連付けを行います。
例えば、File/Directory:src, Absolute path on the server :/var/www/htmlなど。
設定完了したら、OKボタン
4.ide keyに、xdebug.iniで指定している 「PHPSTORM」を設定して、OKをクリック。
5.ヘッダーバーの虫アイコンをクリックし、デバックモードを確立する。
6.処理を止めたい箇所の行の左をクリックし、ブレークポイントを設定する。
7.ブレークポイントを設定したファイルにアクセスすると、自動的に処理が止まります。