Xserver Businessに移転後、PHP7.4に切り替えてもPHP7.1のまま(2)

実は500エラーだった

Xserver Businessに移転して、PHP7.1からPHP7.4に切り替えましたが、移転前のsixcore設定が優先で、PHP7.1のままでした。実はこのとき、500エラーが発生していました。

というのは、composer.jsonのrequirreをPHP7.4にして、composer updateしていました。

"require": { "php": "7.4.*",
Code language: JSON / JSON with Comments (json)

Xserver Businessのコントロールパネルからエラーログをダウンロードすると、次のエラーでした。

PHP Fatal error: Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 7.4.0". You are running 7.1.33. in /var/www/html/vendor/composer/platform_check.php on line 24
Code language: plaintext (plaintext)

書いてあるとおりです。composer.jsonにはrequire 7.4 と設定したのに、サーバはPHP7.1のままだからですね。

対応

ローカルでcomposer.jsonのrequireを"7.1.*"に設定しなおして、

"require": { "php": "7.1.*",
Code language: JSON / JSON with Comments (json)

ローカルでcomposer updateしました。

すると、今度は、

Your requirements could not be resolved to an installable set of packages. Problem 1 - Root composer.json requires php 7.1.* but your php version (7.4.18) does not satisfy that requirement.
Code language: JSON / JSON with Comments (json)

ターミナルで使っているPHPバージョンが7.4だよ、と注意されてしまいました。

ターミナルのPHPを7.1に切り替えてもよかったのですが、composer.jsonのrequireを "~7.1"に修正することにして、composer updateしました。

"require": { "php": "~7.1",
Code language: JSON / JSON with Comments (json)

サーバ(PHP7.1)にデプロイしました。無事動きました。

次にサーバをPHP7.4に切り替えました。無事動きました。

最後に、composer.json の require を "~7.4" に修正して、composer update。

"require": { "php": "~7.4",
Code language: JSON / JSON with Comments (json)

サーバ(PHP7.4)にデプロイしました。

composerのバージョン指定

指定対象のバージョン
4.0.04.0.0バージョン固定
4.0.*4.0.0以上、4.1.0未満パッチバージョン
4.*4.0.0以上、4.0.0未満マイナーバージョン
^4.04.0.0以上、4.1.0未満パッチバージョン
^4.0.54.0.5以上、4.1.0未満パッチバージョン
~4.04.0.0以上、4.0.0未満マイナーバージョン
~4.0.54.0.5以上、4.0.0未満マイナーバージョン

^(キャレット)は、最新のパッチバージョン。
~(チルダ)は、最新のマイナーバージョン。
*(アスタリスク)は、その位置の最新。

composerパッケージのバージョンはセマンティックバージョニングが推奨されています。

例えば、4.0.5 は、メジャーバージョン=4、マイナーバージョン=0、パッチバージョン=5です。

後方互換性のあるバグ修正をしたときは、パッチバージョンを上げます。

あるパッケージ4.0.5を使って動いていたものは、4.0.6に上げても動くはずです。

後方互換性のある変更のときは、マイナーバージョンを上げます。

例えば、新しいメソッドを追加したけれども、既存のメソッドの引数並びや戻り値は変更していない場合です。

あるパッケージ4.0.5を使って動いていたものは、4.1.0に上げても動くはずです。

後方互換性のない変更(破壊的変更)のときは、メジャーバージョンを上げます。

例えば、既存のクラスを削除したり、既存のメソッドを削除したり、引数並びや戻り値を変更した場合です。

あるパッケージ4.0.5を使って動いていたものは、5.0.0に上げても動くとは限りません。

タイトルとURLをコピーしました