レンタルサーバー上で複数のWebサイトが稼働している場合や、一部プログラムのみPHPのバージョンを移行したい場合など、同じWebサーバーで異なるバージョンのPHPを動かしたくなることがしばしばあります。このような時に使える .htaccess を利用してPHPのバージョンを指定する方法を紹介します。より根元に近いwebサーバーそのものの設定を触れない時などで役に立ちやすいです。
実際のコードが次です。
# PHP8.0で動作させるパターンの .htaccess # / はドキュメントルート Action myphp-script /xxx/php8.0.cgi AddHandler myphp-script .php .html
#!/bin/sh # php8.0.cgi exec /usr/bin/php-fcgi8.0
# PHP8.3で動作させるパターンの .htaccess # / はドキュメントルート Action myphp-script /xxx/php8.3.cgi AddHandler myphp-script .php .html
#!/bin/sh # php8.3.cgi exec /usr/bin/php-fcgi8.3
任意のバージョンのPHPを動かすシェルスクリプトを用意し、.htaccess でそれを使うように Action と AddHandler を追加します。Actionディレクティブは名前とする処理を紐づける機能です。例のコードでは myphp-script という名前に php8.X.cgi を対応させています。AddHandler ディレクティブは指定した拡張子のファイルの処理をどれにさせるかを決められます。例のコードでは .php や .html がリクエストされたら myphp-script を呼ぶようにしています。
mod_actions – Apache HTTP サーバ バージョン 2.4
mod_mime – Apache HTTP サーバ バージョン 2.4#ディレクティブ
こんな感じで .htaccess 影響下のPHPコードを実行するPHPのバージョンを指定できます。こうするとwebサイトの一部のみを新しいPHPバージョンに移行するなど柔軟なバージョン管理がやりやすくなります。