LoginSignup
5
3

More than 1 year has passed since last update.

【PHP】1つのxamppでPHPのバージョンを切り替えて使用する(PHP8 ⇄ 7)

Last updated at Posted at 2023-03-18

はじめに

今回、既存のXAMPP環境(PHP8)でPHP7を使えるようにするために、調査したことをまとめました。
既存のxamppに別のバージョンのPHPをインストールし、PHPのバージョンを切り替えてApacheを起動する イメージです。

Apacheエラーや、Composerエラーなど詰まりに詰まって、環境構築に約3日程かかりました・・。
この記事が、同じエラーが発生した方の助けになれば嬉しいです。

また色々調べている中で、 シンボリックリンクを使用し、1つのxammでPHPのバージョンを切り替える という方法もあったのですが、今回ご紹介する方法が最もシンプルなのではないかと思います。

※おことわり※
基本的に学習内容のアウトプットです。
初学者であるため、間違い等あればご指摘いただけますと嬉しいです。

この記事の目的

以下内容のアウトプット

  • PHPのインストール
  • ComposerでPHPのバージョンを指定
  • Composerのバージョン変更

既存の開発環境

  • xampp 8.1.10
  • PHP 8.1.10
  • Composer 2.3.0

Tips:

  • xamppのバージョン = PHPのバージョン
  • バージョンの確認は以下コマンドを参考にしてください。
// phpのバージョンを確認
php -v

// Composerのバージョンを確認
Composer -v

// xamppのバージョンを確認
xampp -v

// Laravelのバージョンを確認
php artisan -v

この記事の内容

  1. PHPインストール
  2. ComposerでPHPのバージョンを指定
  3. Composerのバージョン変更
  4. Apacheエラーについて

1. PHPインストール

今回、PHP7.1.30をインストールします。

【1】 xampp7.1.30をダウンロード

  • ダウンロード先

  • ダウンロードするファイル
    xampp-windows-x64-7.1.30-5-VC14.zip

Tips:
ダウンロードしたzipファイルは、すべて展開してください。

【2】 既存のxamppフォルダー内のファイル名を変更

以下3点の、ファイル名を変更する

  • xapmm/php → php8110
  • xampp/apache/conf/http.conf → http.conf8110
  • xampp/apache/conf/extra/httpd-xampp.conf → httpd-xampp.conf8110

Tips:
ファイル名は任意ですが、バージョンが分からなくならないよう ファイル名 + バージョン にしておくと良いと思います。

【3】 既存のxamppフォルダー内に、ファイルを配置

先ほどダウンロードしたxamppのうち、ファイル名を変更した3点と同名のものを、既存のxamppフォルダーに配置する

【4】 http.confを編集

  • php7apache2_4.dll へのパスを、ファイルの最終行に追記する
http.conf
LoadModule php7_module c:/xampp/php/php7apache2_4.dll
  • 拡張子(.php)とPHPを関連付けるコードを、ファイルの最終行に追記する
    • FilesMatch ディレクティブを使用
http.conf
<FilesMatch "\.php$">
  AddHandler php7-script .php
  AddType application/x-httpd-php .php
</FilesMatch>
  • php.iniへのパスを、ファイルの最終行に追記する
    • PHPIniDir を使用
http.conf
PHPIniDir "c:/xampp/php"

Tips:
○○へのパスは、ご自身の環境に合わせてください。

参考:

【5】 httpd-xampp.conffを編集

php7_module → php_module に変更する(3か所)

httpd-xampp.conff
# <IfModule php7_module>   ←コメントアウトにする

<IfModule php_module>      追記

参考:

【6】 php.iniを編集

以下1行、コメントアウトを外す

php.ini
; extension_dir = "./"    変更前
extension_dir = "./"      変更後

【7】 PHPのバージョンを確認

以下コマンド実行し、phpのバージョンが確認できたら成功

php -v

// 以下のように出力されたらOK
PHP 7.1.30 (cli) (built: May 28 2019 15:32:26) ( ZTS MSVC14 (Visual C++ 2015) x64 )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies

2. ComposerでPHPのバージョンを指定

【1】 ComposerでPHPのバージョンを指定

以下コマンドを実行する

// プロジェクトのディレクトリに移動
C:\Users\hoge-huga> cd C:\xampp\htdocs\プロジェクト名

// ComposerでPHPのバージョンを指定
C:\xampp\htdocs\プロジェクト名> composer config platform.php 7.1.30

// アップグレード or ダウングレードを適用
C:\xampp\htdocs\プロジェクト名> composer update

参考:

【2】 Apacheを起動

  • .env ファイルを配置し、プロジェクトディレクトリで以下コマンドを実行
Composer install
  • Apacheを起動し、ブラウザが開いたら成功

以下のようなエラーメッセージが出た場合、Composerのバージョン変更が必要ですので、
3. Composerのバージョン変更 を行なってください。

// エラーメッセージ
Composer 2.3.0 dropped support for PHP <7.2.5 and you are running 7.0.0,
please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.

Apacheが正常に起動した場合、3. Composerのバージョン変更 は不要です。

3. Composerのバージョン変更

今回、Composer2.2をインストールします。

【1】 xamppのPHPバージョンを戻す

以下3点のファイル名を一旦元に戻す

  • xapmm/php8110 → php
  • xampp/apache/conf/http.conf8110 → http.conf
  • xampp/apache/conf/extra/httpd-xampp.conf8110 → httpd-xampp.conf

Tips:
配置済みのPHP7.1.30用のファイルは、名前を ファイル名 + バージョン に変更しておくと良いです。

【2】 self-updateコマンドを実行

Composerのバージョン指定し、self-updateコマンドを実行する

composer self-update --2.2

参考:

【3】 PHP7を適用

先ほどPHP8に戻しましたが、再度ファイル名を変更し、PHP7を適用する

Tips:
PHPを元のバージョンに戻してからじゃないと、self-updateコマンドが実行できません。

ここまで終わりましたら、再度2. ComposerでPHPのバージョンを指定 を行います。

4. Apacheエラーについて

Apacheを起動する際、こんなエラーに遭遇しました。

XAMPPコントロールパネルでApacheを起動

色々試しても、ずっと同じエラー文が出ており、原因が突き止められませんでした・・。

// エラーメッセージ
Error: Apache shutdown unexpectedly.
This may be due to a blocked port, missing dependencies, 
improper privileges, a crash, or a shutdown by another method.
Press the Logs button to view error logs and check
the Windows Event Viewer for more clues
If you need more help, copy and post this
entire log window on the forums

そんな時は、以下を試してください。

powerShellでApacheを起動

powerShellを管理者で実行し、Apache起動すると、エラー文を確認することができます。
なぜか一部エラー文がドイツ語・・。

// xamppに移動
> cd C:\xampp

// Apache起動
> .\apache_start.bat
// エラーメッセージ
Diese Eingabeforderung nicht waehrend des Running beenden
Bitte erst bei einem gewollten Shutdown schliessen
Please close this command only for Shutdown
Apache 2 is starting ...
httpd.exe: Syntax error on line 537 of C:/xampp/apache/conf/httpd.conf: Syntax error on line 20 of C:/xampp/apache/conf/extra/httpd-xampp.conf: Can't locate API module structure `php_module' in file C:/xampp/php/php7apache2_4.dll: No error

Apache konnte nicht gestartet werden
Apache could not be started
5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3