CentOS 5.6にphp53パッケージ(php5.3.3)を入れた後、xdebugを使えるようにしたときのメモです。
他のCentOS 5.6 + php53パッケージ(php5.3.3)関連の記事はこちら
CentOS 5.6でphpを5.3系にバージョンアップしてみる その1(php本体と関連パッケージ)
CentOS 5.6でphpを5.3系にバージョンアップしてみる その2(pear)
CentOS 5.6でphpを5.3系にバージョンアップしてみる その3(phpmyadmin)
phpのバージョンを5.3.3にアップしたあと、phpのバージョンを確認しようと思ってphp -vを実行すると
# php -v Failed loading /usr/lib64/php/modules/xdebug.so: /usr/lib64/php/modules/xdebug.so: undefine d symbol: alloc_globals PHP 5.3.3 (cli) (built: Mar 30 2011 13:51:54) Copyright (c) 1997-2010 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
というメッセージが出てきました。どうもxdebug ((PHPのデバッグをしやすくするモジュール。エラー内容がより細かく出力されるようになる)) がロードできていないようです。
だいぶ前にxdebugをさくらのVPSにインストールしたような気がしますが、どうやっていれたか忘れてたので困りました^^;php53パッケージにそれらしいものもないし。そういえばpeclで入れた気がする。pecl、が何かを知らずに使っていましたが、調べると「C言語で書かれたPHP用の拡張ライブラリ」みたいです。pearは「phpで書かれたPHP用の拡張ライブラリ」。どちらもPHP用の拡張ライブラリですが、ソースの言語が違うようです。
# pecl list Installed packages, channel pecl.php.net: ========================================= Package Version State xdebug 2.1.1 stable
となっていたので、PHPのバージョンをあげたからxdebugのバージョンもあげた方がいいかと思い
# pecl upgrade xdebug (中略) Build process completed successfully Installing '/usr/lib64/php/modules/xdebug.so' upgrade ok: channel://pecl.php.net/xdebug-2.1.2 configuration option "php_ini" is not set to php.ini location You should add "extension=xdebug.so" to php.ini
としてxdebugのバージョンを2.1.2に上げました。英語のメッセージを読むと「php.iniに”extension=xdebug.so”を追加してね」とあるので/etc/php.d/xdebug.iniを作成して追加し、それを反映するためにapacheをgracefulで再起動。
# touch /etc/php.d/xdebug.ini # vi /etc/php.d/xdebug.ini ↓以下の内容を追加して保存 extension=xdebug.so # apachectl graceful # php -v PHP Warning: Xdebug MUST be loaded as a Zend extension in Unknown on line 0 PHP 5.3.3 (cli) (built: Mar 30 2011 13:51:54) Copyright (c) 1997-2010 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
が、warningが出てxdebugが有効になっていないようです。色々調べると、xdebugはzendのextension扱いで入れればよいようなので/etc/php.d/xdebug.iniを変更してapacheをgracefulで再起動。
# vi /etc/php.d/xdebug.ini ↓以下の内容に変更して保存 zend_extension=/usr/lib64/php/modules/xdebug.so # apachectl graceful
を実行。
その後php -vを実行すると
# php -v PHP 5.3.3 (cli) (built: Mar 30 2011 13:51:54) Copyright (c) 1997-2010 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies with Xdebug v2.1.2, Copyright (c) 2002-2011, by Derick Rethans
と、xdebugのメッセージがきちんとでているので有効になっていると思います。よかったよかった。