どうもこんにちは、Web職人と呼ばれたい塚本です。
新しく入社した新人になります!
ほのぼのしたハジメラボですが、技術者らしく技術的な記事を投下していこうと思います!
さて、本題に入ります。
今回はXserverを使う方々の周知の悩みであるディレクトリ毎のPHPバージョン変更について備忘録を残していこうと思います。
サブドメインのみPHP7.4、本ドメインは古いサイトだから5.6のままで...
そんなシーンもこの手法で解決可能です。
手順
おおまかな手順は以下の4つです。
- エックスアクセラレータの無効化
- ディレクトリのパーミッション変更
- 必要ファイルの設置
- 待つ
1. エックスアクセラレータの無効化
- 設定をしたいドメインに対して、エックスアクセラレータを無効化してください。
- サーバーキャッシュを無効化してください。
- ブラウザキャッシュを無効化してください。
2. ディレクトリのパーミッション変更
- 該当ディレクトリのパーミッションを
755に変更してください。
3. 必要ファイルの設置
該当ディレクトリに以下の2ファイルを設置してください。
※ 注意点
改行コードはCR+LFではなく、LFにしてください。
.htaccess
パーミッションはデフォルトのままでOKです。
※ パスは場所によって合わせてください。
AddHandler myphp-script .php .fphp
Action myphp-script "/php.fcgi"
php.fcgi
パーミッションは755に変更してください。
使いたいPHPバージョンに合わせてください。
#!/usr/bin/sh
exec /usr/bin/php-fcgi5.6
※ 以下の詳細をクリックするとPHPバージョンのパス一覧が確認できます。
PHPのパス一覧
詳細
| PHPバージョン | パス |
|---|---|
| PHP 8.2.x(CGI) | /usr/bin/php8.2-cgi 又は /usr/bin/php-fcgi8.2 |
| PHP 8.2.x(CLI) | /usr/bin/php8.2 |
| PHP 8.1.x(CGI) | /usr/bin/php8.1-cgi 又は /usr/bin/php-fcgi8.1 |
| PHP 8.1.x(CLI) | /usr/bin/php8.1 |
| PHP 8.0.x(CGI) | /usr/bin/php8.0-cgi 又は /usr/bin/php-fcgi8.0 |
| PHP 8.0.x(CLI) | /usr/bin/php8.0 |
| PHP 7.4.x(CGI) | /usr/bin/php7.4-cgi 又は /usr/bin/php-fcgi7.4 |
| PHP 7.4.x(CLI) | /usr/bin/php7.4 |
| PHP 7.3.x(CGI) | /usr/bin/php7.3-cgi 又は /usr/bin/php-fcgi7.3 |
| PHP 7.3.x(CLI) | /usr/bin/php7.3 |
| PHP 7.2.x(CGI) | /usr/bin/php7.2-cgi 又は /usr/bin/php-fcgi7.2 |
| PHP 7.2.x(CLI) | /usr/bin/php7.2 |
| PHP 7.1.x(CGI) | /usr/bin/php7.1-cgi 又は /usr/bin/php-fcgi7.1 |
| PHP 7.1.x(CLI) | /usr/bin/php7.1 |
| PHP 7.0.x(CGI) | /usr/bin/php7.0-cgi 又は /usr/bin/php-fcgi7.0 |
| PHP 7.0.x(CLI) | /usr/bin/php7.0 |
| PHP 5.6.x(CGI) | /usr/bin/php5.6-cgi 又は /usr/bin/php-fcgi5.6 |
| PHP 5.6.x(CLI) | /usr/bin/php5.6 |
| PHP 5.5.x(CGI) | /usr/bin/php-fcgi5.5 |
| PHP 5.5.x(CLI) | /usr/bin/php5.5 |
| PHP 5.4.x(CGI) | /usr/bin/php-fcgi5.4 |
| PHP 5.4.x(CLI) | /usr/bin/php5.4 |
| PHP 5.3.x(CGI) | /usr/bin/php-fcgi5.3 |
| PHP 5.3.x(CLI) | /usr/bin/php5.3 |
| PHP 5.1.x(CGI) | /usr/bin/php-fcgi5.1 |
| PHP 5.1.x(CLI) | /usr/bin/php5.1 |
4. 待つ
すぐにバージョンが変わらない場合があります。
5分ほど、コーヒーでも飲んで待ってみてください。
まとめ
ディレクトリごとにPHPバージョンを変える方法については過去に色々と試していました。
ただ、挙動が不安定でWordPressの管理画面では効かない…みたいなことがありました。
今回の手法では、WordPressの管理画面でもきちんとバージョンが変わっており、不具合もなく動いてくれました。
以下にソースコードを共有しますのでうまくいかない方は参考にしてみてください。