ハジメトーク最新記事

ハジメクリエイト社員による、日々の業務やトレンド、日常のアレコレについてお届けします。

もっと見る

【Laravel編】XserverでディレクトリごとにPHPバージョンを変更する方法

2025.01.15

どうもこんにちは塚本です。

今回はXserverを使う方々の悩みであるディレクトリ毎のPHPバージョン変更について備忘録を残します。

https://hajimecreate.com/labo/change_php_ver_by_directory/

実は同じようなブログを過去に書いていましたが、今回はターゲットをLaravelに限定して書いてみようと思います。

手順

おおまかな手順は以下の4つです。

  1. エックスアクセラレータの無効化
  2. ディレクトリのパーミッション変更
  3. 必要ファイルの設置
  4. 待つ

1. エックスアクセラレータの無効化

  • 設定をしたいドメインに対して、エックスアクセラレータを無効化してください。
  • サーバーキャッシュを無効化してください。
  • ブラウザキャッシュを無効化してください。

2. ディレクトリのパーミッション変更

  • 該当ディレクトリ(ドメイン)のパーミッションを755に変更してください。

3. 必要ファイルの設置

該当ディレクトリに以下の2ファイルを設置してください。
Laravelの標準ディレクトリパターンを想定しています。

※ 注意点

改行コードはCR+LFではなく、LFにしてください。

ドキュメントルート

.htaccessの設置

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
       Options -MultiViews
    </IfModule>
    RewriteEngine On
    
    # Always SSL
    RewriteCond %{HTTPS} !on
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    
    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    RewriteCond %{REQUEST_FILENAME} -d [OR]
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule ^ ^$1 [N]
    RewriteCond %{REQUEST_URI} (\.\w+$) [NC]
    RewriteRule ^(.*)$ public/$1
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ public/index.php
</IfModule>

public以下

.htaccessへ追記

もともと入っているpublic/.htaccessに追記してください。
パーミッションはデフォルトのままでOKです。

# ここから
AddHandler myphp-script .php .fphp
Action myphp-script "/public/php.fcgi"
# ここまで追記

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Send Requests To Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

php.fcgiの追加

パーミッションは755に変更してください。
使いたいPHPバージョンに合わせてください。

#!/usr/bin/sh
exec /usr/bin/php-fcgi8.2

※ 以下の詳細をクリックすると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分ほど、コーヒーでも飲んで待ってみてください。

まとめ

Laravelの場合はpublicディレクトリ以下にcgiを設置してください。
以下にソースコードを共有しますので、うまくいかない方は参考にしてみてください。

https://github.com/Hajimecreate/Switch-PHP-ver-of-Xserver-by-directory-In-Laravel


🏢 株式会社ハジメクリエイトについて

この記事は、 株式会社ハジメクリエイト のエンジニアが執筆しました。


💻 Webシステム開発のプロフェッショナル

私たちは、ビジネスの成長をサポートするため、 PHPを用いたオーダーメイドのシステム開発 を提供しています。
お客様一人ひとりのニーズに応じたカスタムシステムを、 企画から開発・運用まで一貫してサポート
さらに、 React Nativeを活用したiOS/Android対応のアプリ開発 も得意としています。

単に「作る」だけでなく、
課題の本質に向き合い、最適な解決策を提案する のがハジメクリエイトのスタイルです。


🧑‍💻 一緒に働く仲間を探しています!

株式会社ハジメクリエイトでは、 自ら考え行動できるエンジニア を募集しています。
「私はこれがしたい!」という想いを持つあなた、一緒にモノづくりを楽しみませんか?

  • 技術で人の役に立ちたい
  • 意見が通る小さなチームで働きたい
  • フロントエンドもバックエンドも、いろいろ挑戦してみたい
  • お客さんと一緒にプロジェクトを育てたい

そんな気持ちがある方なら、きっと居心地のいい環境だと思います。
正社員はもちろん、パートタイムでの参加も歓迎中! 柔軟な関わり方で、あなたらしく働いてください。

👉 採用情報を見る
👉 お問い合わせはこちら


ちょっとでも「この会社、気になるな」と思ったら、ぜひお気軽にご連絡ください📩
最後まで読んでいただきありがとうございました!

  • Laravel
  • Web技術
  • Xserver

この記事を書いた人

Sho Tsukamoto

Chief Engineer Sho Tsukamoto

2023年4月入社。Web職人のたまごです。 最近はもっぱらコーディングすることは少なく、LaravelやReact Nativeを用いたシステム開発をメインとしています。

Sho Tsukamotoの書いた記事一覧へ

ハジメクリエイトでは一緒に働く仲間を募集しています!

関連記事