
目次
エックスサーバーでは、ドメイン単位でしか PHP バージョン切り替え画面がありませんが、CGI ラッパー(php.cgi)+.htaccess を使うことで、特定ディレクトリのみ別バージョンを適用できます。本記事では、特定ディレクトリのみPHPバージョンを切り替える方法について、具体的な手順とコード例を詳しく解説します。
手順1: Xアクセラレータを無効化
サーバーパネル → 「高速化」→「Xアクセラレータ」を該当ドメインで OFF にします。
キャッシュが有効のままだとうまく反映されないことがあるためです。

手順2:ディレクトリのパーミッションを 755 に設定
対象ディレクトリ(例:/contact-form/)のパーミッションを 755 に変更します
手順2: PHPバージョン確認用info.phpの作成
まず、対象ディレクトリ(例:/contact-form/)の直下に info.php を作成し、現在のPHPバージョンを確認します。以下のコードを使用してください。
<?php phpinfo(); ?>例:

注意: PHPバージョンの確認が終わったら、セキュリティ上の理由から必ず info.php は削除してください。
手順3: php.cgiの作成とパーミッションの変更
PHP の CGI パスを確認
サーバーパネル → 「サーバー情報」→「コマンドパス一覧」から、利用したい PHP の CGI パスを確認。

php.cgi作成
以下のようなファイルを contact-form/php.cgi としてアップロードし、パーミッションを 705 に設定します。
#!/usr/bin/sh
exec /usr/bin/php8.0-cgiここでは PHP 8.3 を例示しています。パスはサーバー情報の「/usr/bin/phpX.X-cgi」等を指定してください
手順4: .htaccess を作成・アップロード
同ディレクトリに以下を記述した .htaccess を置きます(パーミッションはデフォルト)。
Action myphp-script /contact-form/php.cgi
AddHandler myphp-script .phpAction のパスはドキュメントルートからの相対パスに書き換えてください
動作確認
対象ディレクトリの info.php にアクセスして、PHPバージョンが切り替わっているか確認します。

まとめ
この方法により、全ドメインに一括適用されることなく、対象ディレクトリのみ希望するPHPバージョンを利用できます。設定後は必ず動作確認を行い、info.phpは削除するようにしてください。これにより、セキュリティも確保できます。