XAMPP on Windows 7 64bit
XAMPP は WOW64 でばっちり動く
Windows 7 Ultimate 64bit Edition に、XAMPP をインストール。
XAMPP は 32bit 版しか公開されていませんが、普通にインストールすると動きました。
WOW64 エライ!
手順は自分のメモを参照。^^;
XAMPP は、とりあえず互換性重視で 1.6.1 を採用。^^;
さて、これで、Apache のもとで MySQL も PHP もばっちり動きました。
しかし、ここからが苦闘。^^;
IIS 下で PHP と MySQL が動きません。orz
途中経過を飛ばして結論を見たい方はこちら。
IIS で PHP が動かない
ということで、Apache の下では特に 64 bit を意識することなく動きましたが。
IIS で PHP が動きません。orz
相当悩んだのですが、同じ手順で、Windows 7 32bit では動いているので、やっぱり 64bit だからだと納得。
なにせ、IIS のプロセスは 64bit ですが、PHP の ISAPI DLL は 32bit ですから。
通常は 64bit のプロセスから呼び出す DLL も 64bit でなければなりません。
だから、デバイスドライバは 64bit じゃないと動かないのですねー。
諦め半分で 64bit の ISAPI DLL をググっていたところ・・・。
Vista(x64) + IIS7.0 + PHP5 + ISAPI | blog.C#
既定の状態だと「DefaultAppPool」になってると思うので、通常はこれを選択して「詳細設定」を開けばよい。
「詳細設定」を開くと、「32 ビット アプリケーションの有効化」」というのがあるので「true」に設定する。
IIS の設定で動く?!!
IIS マネージャーの左ペインの[アプリケーションプール]を選び、右ペインの[DefaultAppPool]を右クリック[詳細設定]を選択。
[全般]の[32 ビット アプリケーションの有効化]を[True]に変更。
IIS を再起動する必要もなく、これで phpinfo がばっちり表示されました!!!
32 bit の DLL で動いちゃうなんて!!!
64 bit IIS エライ!!
MySQL も動かない
次は MySQL も動きません。
「Fatal error: Call to undefined function mysql_connect()」
よく見かけるエラー。^^;
php_mysql.dll や libmysql.dll をロードできない場合のエラーだったかと。
libmysql.dll を C:\Windows\SysWOW64 にコピーしなおしてみてもダメ。
んー、IIS 起動中は、C:\Windows\SysWOW64\libmysql.dll をつかんでいて削除や上書きできないので、IIS が DLL を見つけてロードしていることは間違いなさそうなのですが。
結局 libmysql.dll のコピーはやめて、パスを通したところ、動きました。
んー、動いたのはいいのだけれど。
なんとも釈然としないなぁ。
libmysql.dll 以外の dll を正しくつかめていなかったということでしょうか?
32bit の時は、System32 へ libmysql.dll いっこだけコピーすれば動いたのになぁ。
32bit なら System32 に当たり前にある DLL がなかったりしたのかなぁ?
Windows 7 64bit の IIS で XAMPP の PHP, MySQL を使う手順まとめ
インストールとISAPIフィルタ等の設定は、32bit と同じ。
32bit の ISAPI DLL を動かすために、アプリケーションプールの設定で 32bitアプリを有効にする。
- IIS マネージャーの左ペインの[アプリケーションプール]を選択。
- 右ペインの[DefaultAppPool]を右クリック、[詳細設定]を選択。
- [全般]の[32 ビット アプリケーションの有効化]を[True]に変更。
※複数のサイトがある場合は、それぞれのアプリケーションプールごとに設定。
MySQL を動かすために、DLL のあるフォルダへのパスを通す。
以上