【TIPS】【CentOS】CentOS 5.6でphpを5.3系にバージョンアップしてみる その4(pecl-xdebug)

スポンサーリンク

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のメッセージがきちんとでているので有効になっていると思います。よかったよかった。