キタックCGソリューションセンター

制作室の叫び

MAMPでhtaccessを使ってPHPのバージョンを切り替える

2021年04月20日(火)

PV 439

だいぶ旧バージョンのWordpressサイトを最新バージョンに上げる必要があり、そのまま上げるのは怖すぎるので、MAMPで作ったローカル環境にサイトを移設して検証しようと思ったのですが……
MAMPではPHPのバージョンが新しいため、そのままではサイトが動かない……つらい……

そこでレンタルサーバーでよくあるhtaccessに記述したらそのバージョンのPHPで動くようにできるやつ、ローカルでも実現できねーかなーと思って調べてみたら、出来ました。備忘録がわりに書いておきます。

なお、Macでのお話です。また/Applications/MAMP/にインストールした場合です。環境が異なる場合は適宜読み替えてください。

1、シンボリックリンクを作成

ターミナルを立ち上げて、以下のコマンドを実行します。

cd /Applications/MAMP/cgi-bin
ln -s /Applications/MAMP/bin/php/php5.6.40/bin/php-cgi php56

1行目:/Applications/MAMP/cgi-binディレクトリに移動
2行目:PHP5.6.40のCGI版へのシンボリックリンクを「php56」という名称で作成

上記は5.6.40で動かしたい場合です。
/Applications/MAMP/bin/php/を覗けば、どのバージョンが入っているか分かります。
動かしたいバージョンに置き換えて実行してください。

2、httpd.confを修正・追記

/Applications/MAMP/conf/apache/httpd.confを編集します。

ファイルのどこかに以下の記述があるので、

<Directory "/Applications/MAMP/cgi-bin">
    AllowOverride None
    Options None
    Require all granted
</Directory>

以下のように書き換えます。

<Directory "/Applications/MAMP/cgi-bin">
    AllowOverride None
    Options FollowSymLinks
    Require all granted
</Directory>

Options NoneFollowSymLinksに変更することでシンボリックリンク先を参照できるようになります。

また、ファイルのどこかに以下の一文を追加してください。

Action php5.6-script /cgi-bin/php56

php5.6-scriptの部分はなんでもいいです。
php5.6-scriptというアクションがリクエストされた時に/cgi-bin/php56が実行されるよ、という感じの意味です。

3、htaccessの編集

以下の記述をhtaccessファイルに記述してください。

AddHandler php5.6-script .php

phpファイルだったらphp5.6-scriptというアクションを実行するよ、みたいな感じの記述です。

先にhttpd.confphp5.6-scriptというアクションのパスを/cgi-bin/php56に設定していました。
これはPHP5.6.40のCGI版へのシンボリックリンクなので、つまりphpファイルが来たらPHP5.6.40のCGI版が動作する、といった感じです。


403エラーが出るときはおそらく/Applications/MAMP/bin/php/php5.6.40/bin/php-cgiのパーミッション周りだと思うので、ファイルやディレクトリの権限を確認してみてください。755とかにすればOKかと。

これでMAMPでhtaccessを使ってPHPのバージョンを指定できるようになってる、はず。たぶん。
ダメでも怒らないでください。では。

Share プリーズ

よろしければどうかご感想を!

※コメントは、サイト管理者による承認後、ページに表示されます。

この記事は、感想を受け付けていません

書き手は私

キタックCGSCコアメンバー

  • 樋口大輔
  • 小林将太
  • ちゃんまき
  • 高橋どらみ
  • 高橋皓一
  • 笠井
  • 石本
  • 佐藤サバ美
  • こめ
  • 佐久間尭