Xdebug

デバッグにvar_dump()を多用してる今日この頃。
Xdebug なるものがどうも便利らしいとの情報。お試しで入れてみる。

Xdebug のインストール pecl コマンドを使うらしい。

pecl ってなんぞ

PECL(ピクル、PHP Extension Community Library)は、PHPで利用できる拡張ライブラリ(パッケージ)を提供しているサービス。

PECLで提供されるライブラリはCで記述されているため、PHPで記述されたPEARのライブラリよりも高速に動作する。PECLにより提供されるライブラリはPHPの拡張モジュールとしてインストールされる。
==== 中略 ===
PECLのインストール用には、PEAR同様に「pecl」コマンドが提供されている。インストール方法もほぼPEARと同じだが、インストール後に設定ファイル(php.ini)の「extension」でインストールしたモジュールを指定する必要がある点が異なる。

参照:wikipedia

Xdebug のインストール

…の前に、自分の環境では httpd-devel がなくてインストールに失敗した。

httpd-devel をインストール
sudo yum install httpd-devel
今度こそ Xdebug のインストール
sudo pecl install xdebug
こんな感じで完了ログが出る
Build process completed successfully
Installing '/usr/lib64/php/modules/xdebug.so'

Release Warnings
================
p

install ok: channel://pecl.php.net/xdebug-2.2.3
configuration option "php_ini" is not set to php.ini location
You should add "zend_extension=xdebug.so" to php.ini

php.ini の編集

まずコピーをとる。バックアップ大事やん。

cd /etc/
sudo cp -p php.ini php.ini.130930.bak

編集、修正

vim php.ini

 933 [xdebug]
 934 zend_extension = /usr/lib64/php/modules/xdebug.so

apache の再起動

sudo service httpd restart

Xdebug がインストールされたか確認

[riceplanting@localhost ~]$ php -v
PHP 5.3.3 (cli) (built: Jul 12 2013 20:35:47)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
    with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans

以上!



と、思いきや

var_dump() してみると、うまく表組みで表示されない

  • テストコード
  1 <?php
  2
  3 class Foo
  4 {
  5     public function hello() {
  6         throw new \Exception();
  7     }
  8 }
  9
 10 class Bar
 11 {
 12     public function hello(Foo $foo) {
 13         $Foo->hello();
 14     }
 15 }
 16
 17 $foo = new Foo();
 18 $bar = new Bar();
 19 $bar->hello($foo);
  • 結果

f:id:riceplanting:20131003002059j:plain

原因

なんでじゃろうと悩む。Google先生にお伺いを立てる。見つかる。
さすがGoogle先生や!

php.ini の設定で html_errors を On にしないといけないらしい。
ってことで html_errors を On にする。

 603 html_errors = On
apache を再起動してテストコードを再度実行
  • 結果

f:id:riceplanting:20131003002755j:plain

色使いが毒々しいです。

もっとスマートな設定方法が

モジュールの管理・設定は /etc/php.d/ 以下で管理すればいいじゃない

xdebug.ini を作成

  1 ;[xdebug]
  2 zend_extension = /usr/lib64/php/modules/xdebug.so