まぶてく!

Mac を中心としたテクノロジー全般。

XAMPP on Windows 7 64bit

XAMPP は WOW64 でばっちり動く

Windows 7 Ultimate 64bit Edition に、XAMPP をインストール。
XAMPP は 32bit 版しか公開されていませんが、普通にインストールすると動きました。
WOW64 エライ!


手順は自分のメモを参照。^^;

XAMPP 1.7.2 -> 1.6.1 にダウングレード - まぶてく!

XAMPP は、とりあえず互換性重視で 1.6.1 を採用。^^;


さて、これで、Apache のもとで MySQLPHP もばっちり動きました。


しかし、ここからが苦闘。^^;
IIS 下で PHPMySQL が動きません。orz
途中経過を飛ばして結論を見たい方はこちら。

Windows 7 64bit の IIS で XAMPP の PHP, MySQL を使う手順まとめ

IISPHP が動かない

ということで、Apache の下では特に 64 bit を意識することなく動きましたが。
IISPHP が動きません。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 と同じ。

XAMPP 1.7.2 -> 1.6.1 にダウングレード - まぶてく!


32bit の ISAPI DLL を動かすために、アプリケーションプールの設定で 32bitアプリを有効にする。

  1. IIS マネージャーの左ペインの[アプリケーションプール]を選択。
  2. 右ペインの[DefaultAppPool]を右クリック、[詳細設定]を選択。
  3. [全般]の[32 ビット アプリケーションの有効化]を[True]に変更。

※複数のサイトがある場合は、それぞれのアプリケーションプールごとに設定。


MySQL を動かすために、DLL のあるフォルダへのパスを通す。

  1. [コンピュータ] の [プロパティ] から [システム環境変数] を追加。
     変数名:PHPRC
     変数値:libmysql.dll 等へのパス 例:C:\xampp\php
  2. Windows を再起動。(システム環境変数なので、再起動が必要。)


以上