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

phpizeを使ってphpの再コンパイルをすることなくmysqliを追加する

mysqliを使ったソースをサーバー上で動かそうとしたときに以下のエラーが出た

Fatal error: Class 'mysqli' not found in /var/www/login.php on line 101 

mysqliが使えるかどうかはphp -mで確認する。

php -m

mysqliを使う場合、本来phpコンパイルする際に--width-mysqliオプションをつけないといけない。
でもphpizeコマンドを使うと、わざわざphpを再コンパイルすることなく拡張モジュールの追加が可能となる。

$ cd "phpのソースがあるディレクトリ"
$ cd ext/mysqli
$ phpize 
Configuring for:
PHP Api Version:         20090626
Zend Module Api No:      20090626
Zend Extension Api No:   220090626

$ ./configure
$ make
$ make test
$ make install
Installing shared extensions:     /usr/local/lib/php/extensions/no-debug-non-zts-20090626/
Installing header files:          /usr/local/include/php/

インストール後、php.iniの最後に以下を追加すればok

extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20090626/"
extension=mysqli.so

参考サイト
PHP: phpize で共有 PECL 拡張モジュールをコンパイルする方法 - Manual
ソースコードをbuildしてインストールしたPHPにmysqliが入っていない時の対処法 - Qiita