インストール関連メモ(WindowsXP/Apache2.2.2/PHP5.1.4/MySQL5.0.22)

[2007.6.4追記]WindowsXP/Apache2.2.x/PHP5.2.xはインストールの方法がPHP5.1.xからかなり変わっています。OS名+Apache[バージョン名]+PHP[バージョン名]で検索されることをお勧めします。Windows Apache2.2 PHP5.2 - Google 検索例えばここ→Windows 環境への Apache 2.2.4 + PHP 5.2.0 導入(インストール)記録 :: ソフトウェア :: Pocketstudio'z logとか。


インストール方法から書いてあるので買った

  • Apache「Apache HTTP Server」のページは移転いたしましたの「作者サイトからDOWNLOAD」をクリックするといきなりwin32用のバイナリのアーカイブに飛ぶ。apache_2.2.2-win32-x86-no_ssl.msiをダウンロードしインストールした。



    Apache HTTP サーバ バージョン 2.2 ドキュメント - Apache HTTP サーバ バージョン 2.2




  • p.25「4 DocumentRootを設定する」

    この本はデフォルト値を使って話を進めている。変更する場合、書き換える場所は2箇所:(1)DocumentRootパラメータ, (2)DocumentRootのディレクトリに対するディレクティブ。cf.Apache windows ドキュメントルート 変更 - Google 検索


  • p.25「5 AllowOverrideを設定する」

    ドキュメントルートのディレクティブに対するものをAllに変更した。ローカルだからいいでしょう。


  • p.26「7 言語関係を設定する」など

    右側サンプルに「Linux:$n行目」とのみあるのでLinuxのみなのだろう。タイトルの直下に[Linux][Linux/Windows]などの区別が表示してあるとうれしい。


  • [6.18]p.26「7 言語関係を設定する」

    LanguagePriority パラメータは Apache 2.2.2 では ./conf/extra/httpd-languages.conf ファイルの中にある。httpd.conf でこのファイルを有効にするには


    #Include conf/extra/httpd-languages.conf

    のコメントを外す


  • Apache2.2 とPHPの php5apache2.dll について

    PHP5は php-5.1.4-Win32.zip (04 May 2006)を展開したものをそのまま使った。(PHPインストーラは使っていない)

    • http.conf を書き換えて再起動をしようとすると "The requested operation has failed!" という表示が出て起動できない。原因が httpd.conf の

      LoadModule php5_module C:/usr/php/php5apache2.dll

      の記述にあることは消去法で確かめた。


    • ウェブで探るとPHP5の php5apache2.dll は Apache2.2 では動作しないようだ(参考:LoadModule php5_module php5apache2.dll - Google 検索)。


      [蛇足]Apache LoadModule php5 The requested operation has failed! - Google 検索したがこの情報に簡単に辿り着かなかった。検索ってムズカシイネ。

    • Apache VC15 binaries and modules download でApache2.2用の php5apache2.dll-php5.1.x.zip をダウンロードし、Readmeに従って2個のファイルを各々、指示されたディレクトリにコピーした。(この時点で試しにApacheを再起動するも同じエラーでこける。)

    • そのReadmeを読むと3番目の作業として「Visual C++ 2005 再頒布可能パッケージ(ダウンロード)」が必要とのこと(「.NET Framework Version 2.0 再頒布可能パッケージ(ダウンロード)」があれば不要とのこと)。
      NET Framework Version 2.0 再頒布可能パッケージをダウンロードしてインストールした。

    • 今度は再起動時にエラー表示が出なかった。PHPコマンドの
      <?php
      phpinfo();
      ?>
      を書いた文書を呼び出すときちんと情報がでた。
      [蛇足]上記本にあったソース
      <?
      phpinfo();
      ?>
      では動作しなかった。[6.12]p.35に"<? ?>"や"<% %>"を使えるかどうかはphp.iniの設定によることが書いてあった。

    これでPHPが動作する環境が出来たということなのでしょう。


    [8.3]Windows2000でも同じ事をやったら動いた。


  • 再起動すると勝手に立ち上がっていたので、[スタート]->[コントロールパネル]->[管理ツール]->[サービス]で Apache2.2 の設定を「自動」から「手動」切り替えた。


  • MySQL5.0.22の入手:MySQL :: Download MySQL Community Server


  • MySQLのインストール(section 55, p.188-)「5 設定を完了する」の次でWindowsXPでは「ポート3306/TCPが開いていないのでファイアウォールで3306/TCPを開けてretryしてくれ」という趣旨のエラー表示がでる。


    穴のあけ方:WindowsXP��MySQL���ݒ肷���Ƃ���Connection Error���o���B



  • この辺で一旦Apache2.2をアンインストールしてApache2.0を入れた。というのもソフト同士の連携のツボがわからないので、ウェブとか本とかに記述のある環境にワザと揃えておいて、動作する状況をきちんと押さえておきたいと思ったから。



  • [6.12]HTMLにPHPスクリプトを埋めて動かない。なぜじゃ。[6.12later]httpd.conf に AddType application/x-httpd-php .php .html で動作した。[6.18]ただし、これをやると.htmlファイルが全て一旦php5を経由するので、そのステップでSJISEUCとして読んだせいで文字化けしてしまったソースをそのまんまSJISソースとして吐き出してしまう。画面が?で埋まってしまうか何も書かない。.htmlを指定から外す



    [この発見に至る経緯]「素の」httpd.confから再出発してphpの導入で化け始めることを確認した。



  • [6.15]MySQLを一旦アンインストールして再インストールするときは、MySQLディレクトリを消しておかないと「以前の記憶」が残るらしい。それから3306ポートを事前に開けておいても config wizard で「開いてない」というエラー表示が出た。ポートを消して作り直すと通った。

  • [6.15]
    [PHP5.1.4からMySQL5.0.22を召喚するこびとさん]

    http://dev.mysql.com/downloads/connector/php/のページから mysql 関数用の php_5.1.4_mysqli_5.0.22-win32.zip と mysqli 関数用の php_5.1.4_mysql_5.0.22-win32.zip を持ってきて入れた。


    [8.3]Windows2000の環境にインストールするときは、このコネクターを使う必要はないようだ。




    ApachePHPといい、PHP5とMySQLといい、この辺の各ソフト本体のバージョンアップに伴う他のソフトとの連携をきちんととるためにバイナリを探して引っ張ってこないといけないというのは、ビギナーには辛いものがあると思う。他にもインストール中にMySQL用にWindowsXPファイアウォールに穴を開けないといけないことが分かるとか。



  • [PHP5.1.4からのMySQL5.0.22の召喚に苦戦する]

    [6.15:研究日記より抜粋]

    PHP5からMySQLが呼び出せぬ。

    Fatal error: Call to undefined function mysql_connect() in (ぴー).html on line 3

    なぜじゃ? libmysql.dllはsystem32に入れた。 php.iniのextension=php_mysql.dllはコメントアウトを外した。 なんかコアな受け渡しの部分で「マニュアル本」どおりに行かないのは苦しいな。
    http://dev.mysql.com/downloads/connector/php/ というページを見つけた。 バイナリを入れるも上手く動かず。


    [6.17]
    phpinfo()の出力を見ると mysql のセクションがない(上記本p.210 sect.63にはそういう部分があると書いてあるのに…)。レンタルサーバー|Joe'sクラウドコンピューティングの画像を見るとlibxmlの次にある。phpinfo()のConfigurationセクション(辞書式順で項目が並んでいる)のlibxmlセクションの次がodbcになっている。php.iniのextension=が効いていないのかな。


    [6.17]httpd.conf に書いていた PHPIniDir に正しい php.ini のディレクトリ名を記述したら上手く走るようになった(こんなのいつ書いたかなあ?[add]Apache2.2のphp5apache2.dll関連の修正をしたときだ)。 httpd.conf での指定が優先するのかな。でも phpinfo() の最初のテーブル内には Configuration File (php.ini) Path が PHPIniDir の指定したディレクトリではなく c:\windows を表示している。なぜじゃ。phpinfo() の libxml セクションの次に mbstring セクションと mysql セクションが表示されるようになった。


  • [6.17]PHP: Overview of the MySQL PHP drivers - Manual



  • [6.17]Apache2.0をアンインストールしてApache2.2をインストールした。phpinfo()とmysql_connect()が動いたので多分大丈夫だろう。