Top/Devel/PHP/バージョンの違うPHPでの動作確認を簡単に

バージョンの違うPHPでの動作確認を簡単にはてなブックマーク

バージョンの違うPHPを共存・同居させる。
以下は CGI版PHP での話です。
DSO版PHP では、PHP-users 保存書庫 バージョン違いのPHPの同居 を見たところ、
ちょっと面倒かなーという感じがしたもので逃げました。

Apacheでの手順

  1. 以下のようにしてCGI版PHPをインストール。mbstringなどはお好みで。
    1. PHP3.x.x
      export PHP_PREFIX="/usr/local/php-3.0.18"
      ./configure --enable-cgi --disable-cli --disable-pear \
      --enable-force-cgi-redirect --with-config-file-path=$PHP_PREFIX/lib/
      make
      mkdir -p $PHP_PREFIX/lib
      cp php $PHP_PREFIX/
      cp php3.ini-dist $PHP_PREFIX/lib/php3.ini
    2. PHP4.x.x
      export PHP_PREFIX="/usr/local/php-4.3.2"
      ./configure --enable-cgi --disable-cli --disable-pear \
      --enable-force-cgi-redirect --with-config-file-path=$PHP_PREFIX/lib/
      make
      mkdir -p $PHP_PREFIX/lib
      cp sapi/cgi/php $PHP_PREFIX
      cp php.ini-dist $PHP_PREFIX/lib/php.ini
    3. PHP5.x.x
      export PHP_PREFIX="/usr/local/php-5.0.3"
      ./configure --enable-cgi --disable-cli --disable-pear \
      --enable-force-cgi-redirect --with-config-file-path=$PHP_PREFIX/lib/
      make
      mkdir -p $PHP_PREFIX/lib
      cp sapi/cgi/php $PHP_PREFIX
      cp php.ini-dist $PHP_PREFIX/lib/php.ini
  2. httpd.confを開き、以下を追記。*1
    ScriptAlias /php-3018/ "/usr/local/php-3.0.18/"
    AddType application/x-httpd-php-3018 .p3018
    Action application/x-httpd-php-3018 "/php-3018/php"
    
    ScriptAlias /php-432/ "/usr/local/php-4.3.2/"
    AddType application/x-httpd-php-432 .p432
    Action application/x-httpd-php-432 "/php-432/php"
    
    ScriptAlias /php-433/ "/usr/local/php-4.3.3/"
    AddType application/x-httpd-php-433 .p433
    Action application/x-httpd-php-433 "/php-433/php"
    
    ScriptAlias /php-503/ "/usr/local/php-5.0.3/"
    AddType application/x-httpd-php-503 .p503
    Action application/x-httpd-php-503 "/php-503/php"
  3. Apacheを再起動。
  4. hoge.php を hoge.p3018, hoge.p432, hoge.p503 などとしてコピー。

Apache for Win32での手順

以下、動作させるスクリプトを hoge.php と仮定。

  1. PHP: Releases からWindows binary (zip)を落としてくる。
  2. c:\などに解凍。
  3. php.ini-distをphp.iniにリネーム。
  4. php.iniを開き、mbstringなどをお好みで。
  5. httpd.confを開き、以下を追記。
    ScriptAlias /php/ "c:/php-4.3.10-Win32/"
    AddType application/x-httpd-php .php
    Action application/x-httpd-php "/php/php.exe"
    
    ScriptAlias /php-3017/ "c:/php-3.0.17-win32/"
    AddType application/x-httpd-php-3017 .p3017
    Action application/x-httpd-php-3017 "/php-3017/php.exe"
    
    ScriptAlias /php-432/ "c:/php-4.3.2-Win32/"
    AddType application/x-httpd-php-432 .p432
    Action application/x-httpd-php-432 "/php-432/php.exe"
    
    ScriptAlias /php-433/ "c:/php-4.3.3-Win32/"
    AddType application/x-httpd-php-433 .p433
    Action application/x-httpd-php-433 "/php-433/php.exe"
    
    ScriptAlias /php-503/ "c:/php-5.0.3-Win32/"
    AddType application/x-httpd-php-503 .p503
    Action application/x-httpd-php-503 "/php-503/php-cgi.exe"
  6. Apacheを再起動。
  7. hoge.php を hoge.p3017, hoge.p432, hoge.p503 などとしてコピー。

AN HTTPDでの手順

以下、動作させるスクリプトを hoge.php と仮定。

  1. PHP: Releases からWindows binary (zip)を落としてくる。
  2. c:\などに解凍。
  3. php.ini-distをphp.iniにリネーム。
  4. php.iniを開き、 cgi.force_redirect = 0 にする(PHP3では不要)。mbstringはお好みで。
  5. AN HTTPDを起動し、オプション一般で次のように設定する。また、設定時には「一般パスでも実行する」「PATH_TRANSLATEDを使う」にチェックを入れる。
    拡張子実行プログラム
    .phpc:\php-4.3.10-Win32\php.exe
    .p3017c:\php-3.0.17-win32\php.exe -c c:\php-3.0.17-win32
    .p432c:\php-4.3.2-Win32\php.exe
    .p433c:\php-4.3.3-Win32\php.exe
    .p503c:\php-5.0.3-Win32\php-cgi.exe
  6. hoge.php を hoge.p3017, hoge.p432, hoge.p503 などとしてコピー。

備考

  • これで、hoge.p432はPHP4.3.2、hoge.p503はPHP5.0.3で実行され(ているような気がす)る。
    PukiWikiのindex.phpをindex.p432としてコピーしたものではPukiWiki-dev:BugTrack/761の不具合も再現してるので、とりあえずOK?
  • スクリプトをコピーするのではなく、ハードリンク/ジャンクション作成ツールでハードリンクを張れば、ソースの改変も楽々 :)
  • CGI版PHPではHTTP認証のフックはできないので注意。

参考

Amazon

*1 ここではすでに.phpはDSO版PHPで動作するように設定しているものとしている。
差分 一覧