はじめに
今回、既存の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
この記事の内容
- PHPインストール
- ComposerでPHPのバージョンを指定
- Composerのバージョン変更
- 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 へのパスを、ファイルの最終行に追記する
LoadModule php7_module c:/xampp/php/php7apache2_4.dll
- 拡張子(.php)とPHPを関連付けるコードを、ファイルの最終行に追記する
-
FilesMatch
ディレクティブを使用
-
<FilesMatch "\.php$">
AddHandler php7-script .php
AddType application/x-httpd-php .php
</FilesMatch>
- php.iniへのパスを、ファイルの最終行に追記する
-
PHPIniDir
を使用
-
PHPIniDir "c:/xampp/php"
Tips:
○○へのパスは、ご自身の環境に合わせてください。
参考:
【5】 httpd-xampp.conffを編集
php7_module
→ php_module
に変更する(3か所)
# <IfModule php7_module> ←コメントアウトにする
<IfModule php_module> ←追記
参考:
【6】 php.iniを編集
以下1行、コメントアウトを外す
; 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