読者です 読者をやめる 読者になる 読者になる

肉とビールとパンケーキ by @sotarok

少し大人になった「肉とご飯と甘いもの」

PHP 5.3 にアップグレードする人は、pecl で入れる拡張機能に注意

PHP

ってことで、dotdeb を使って PHPPHP 5.3 にしたら、xdebugやAPCがまだ対応してなくて泣ける、という話。
環境は ubuntu 9.04 です。debianでも同じだと思うけど。

% php -v
PHP 5.3.0-0.dotdeb.6 (cli) (built: Jul  3 2009 09:22:56) 
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies
% php -i | grep extension_dir
extension_dir => /usr/lib/php5/20090626 => /usr/lib/php5/20090626

という環境で、

% sudo pecl install xdebug

とかやると、

% sudo pecl install xdebug
downloading xdebug-2.0.4.tgz ...
Starting to download xdebug-2.0.4.tgz (288,497 bytes)
............................................................done: 288,497 bytes
67 source files, building
running: phpize
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519
...

などといって、 xdebug.so は、

% ls /usr/lib/php5/20060613
xdebug.so

に入ります。が、PHP 5.3 では、Zend Module API が、

% php -i | grep -i extension
PHP Extension => 20090626
Zend Extension => 220090626
Zend Extension Build => API220090626,NTS
PHP Extension Build => API20090626,NTS
extension_dir => /usr/lib/php5/20090626 => /usr/lib/php5/20090626

の通り、 20090626 に変更されてるので、拡張機能のディレクトリは、

/usr/lib/php5/20090626

になっています。

ので、使えませんです。はい。extension的には、xdebugはzend_extensionなので、 zend_extension=/usr/lib/php5/20060613/xdebug.so ってフルパス指定するだろうし、こうすればいけるかな?と思ったけど、まあ後述しますが、すぐリリースされると思うので別にそこまでがんばらなくてもいいか。


ちなみにCentOSではZend Module APIバージョンごとのディレクトリがなかったので、アップデートしたらどうなるのかわかりません、試してません。

どうすればいいか

まあ、少し待てばいいんじゃないかな。この時期にPHP 5.3 入れてる人は多くないとは思うけどw


ちなみに、xdebugは、公式サイトでは、PHP 5.3 に対応した新しいバージョンがリリースされています。peclにはまだあがっていませんが、時間の問題でしょう。


APCもそのうちpeclにあがるんじゃないかな、という妄想。