PHPをアップグレードしたら、mysqliが動かなくなった(Win XP) [Web開発]
マカなBlogなはずですが、WinXPでのApache2+PHP5を動かすときのお話です。
(前はMac OS Xで動いていたんですけど、WinXPが暇そうだったので環境を移行したということでふ)
Apacheが2.0.58(Win32)でMySQLが5.0.22(ちと古いか…)でPHP5.1.4から5.1.6へバージョンアップしようとしたんですが。
PHPはマニュアルインストールで、c:¥phpにいれてあり、ApacheはインストーラでProgram Filesの適切なところへいれてあったわけです。
とりあえず、古いPHPをphp.oldにして、新しいほうを¥phpにコピーして、php.iniは一応両方を開いて確認しながら、書き直したのですが結局はそのまま同じでした。
そのあと、OSを再起動させてmysqliを使ったページを開いたところ、
"PHP Warning: PHP Startup: Unable to load dynamic library 'c:\php\ext\php_mysqli.dll'"
というメッセージが出てきて動かなくなってました。phpinfo();を見てもmysqliがありません。
そうなる原因がわからなくちょっとはまり気味になったんですが、そういえば、前のPHPかMySQLををインストールするときにApacheのフォルダに何かを無理矢理コピーした記憶がよみがえってきて、とりあえず、Apacheのbinフォルダをみると「libmysql.dll」というApacheの提供でないファイルがありました。
これは、phpからコピーしてきたファイルでした。当然、前のバージョンのファイルです。
どうやら、libmysql.dllとphp_mysqli.dllのバージョンが一致しないと、上記のようなエラーをphpが出力して、mysqliが動かなくなるようです。
対処は、今後のためにPHPからApacheへコピーしたdllを全部消して、システム環境変数のpathにc:¥phpを追加して再起動させました。これでちゃんと動いてます。
コメント 0