はじめに
今回は Mac M1チップのVS codeでRest Clientという拡張機能を使用して、APIにリクエストを送信した時に
Socket Hang Upという通信系のエラーが発生したので、それの解決方法を忘備録として記述していきます。
開発環境
Laravel8.0
Docker
Sail
原因
事の発端は、PCを再起動して下記のURLに接続しようとすると、データが送信されておりませんというエラーがブラウザ上で発生している事に気づいた。
http://localhost
その時点で、VS codeでRest Clientで Send Requestを実行しようとするとVS Code上でSocket Hang Upというエラーが出ていた。
ブラウザ上で、localhostにも接続する事が出来ないので、現在の開発環境がLaravel8から新搭載された
Dockerの開発環境をより簡易的に利用できるSailという機能を使用していたので、Docker環境に何か支障が出ているのではと推測。
Dockerのダッシュボードから、各コンテナの稼働状況を確認してみると下記のようなエラーログが延々と吐き出されていた。
laravel.test_1 | Your Composer dependencies require a PHP version ">= 8.0.0". You are running 7.4.25.
laravel.test_1 |
laravel.test_1 | PHP Fatal error: Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 8.0.0". You are running 7.4.25. in /var/www/html/vendor/composer/platform_check.php on line 24
上記理由から、やはりlaravel.test1というコンテナが上手く稼働出来ていないので、今回のようなエラーが発生していると推測してエラーメッセージで検索。
ここから数時間ぐらいエラーと格闘していたのですが下記参考記事を発見。
念の為、sailで動かしているPHPのバージョンを下記コマンドで調べてみる。
sail php --version
PHP 7.4.25 (cli) (built: Oct 22 2021 12:34:33) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
composerで管理しているPHPのバージョンをcomposer.jsonファイルで確認すると、バージョンが下記になっていた。
composer.json {}config
"config": {
"platform": {
"php": "8.0.0"
},
今回のエラーは、sailで動かしているPHPのバージョンは7.4.25なのに、composerで管理しているPHPのバージョンは8.0.0だよ、という風に怒られていました。
composerdで管理しているPHPのバージョンも7.4.25に合わせないといけないので下記のようにします。
composer.json {}config
"config": {
"platform": {
"php": "7.4.25"
},
上記のようにcomposer.jsonファイルを修正してから、既存のcomposer.lockを削除しないと
永遠に修正が反映されないというような事がどこかの記事で書いてあるのを発見したので、composer.lockを削除してから composer install
を実行して修正を反映する。
一応参考記事通りにdocker-compose.ymlファイルでlaravel.testコンテナの中で動かしているPHPのバージョンを確認すると下記のようになっている。
laravel.test:
build:
context: ./docker/7.4 //恐らくこの箇所で定義しているバージョンが、sailで動かしているPHPのバージョンになる?
dockerfile: Dockerfile
args:
WWWGROUP: "${WWWGROUP}"
image: sail-7.4/app //恐らくこの箇所で定義しているバージョンが、sailで動かしているPHPのバージョンになる?
docker-compose.ymlファイルの書き方は合っていそうだったのでもう一度コンテナをビルドし直す為に
./vendor/bin/sail build --no-cache
を実行したのですが何やら大量のエラーが吐き出されていて、解決に時間がかかりそうだったのでDockerのダッシュボードからコンテナを一度削除してから
再度 ./vendor/bin/sail up -d
を実行してSailの各コンテナを立ち上げて、Dockerのダッシュボードからログを確認してみると先ほど出ていたエラーが解消されて、各コンテナが正常に起動されていることを確認しました。
localhostにも接続できて、VS Codeで、Rest ClientでAPIにリクエストを送信する際にも通信エラーが発生しなくなりました。
今回のエラーとの格闘で、まだまだDockerやSail、Composerの依存関係に対する理解が甘いと感じたのでその部分もこれから詰めていけたらと思います。
上記内容に関する知見があり、この箇所は間違っているから、この部分をもうちょっと学んだ方がいいなど、アドバイスを頂けますとありがたいです!長文になりましたが、ここまでご拝読頂きありがとうございます!
上記以外に他にご参考にさせて頂いた記事を掲載させて頂きます。