20201118のlaravelに関する記事は6件です。

PHP8 RC、Composer2、Xdebug3 RCでLaravel8.xを動かす

概要

  • PHP8.0がRCになっていたから諸々新し目のものを使って環境構築してみるよ
  • 環境自体はDockerで構築していくよ
  • 全ての環境に対応出来るわけじゃないと思うけど参考になれば嬉しいよ
  • PHP8.0もXdebug3もRCなので現状は実運用しないように、とはいえ開発していくのには見ていくことも必要だよね

最終的な環境

$ docker-compose exec app php --version
PHP 8.0.0RC4 (cli) (built: Nov 12 2020 20:17:20) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.0-dev, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.0RC4, Copyright (c), by Zend Technologies
    with Xdebug v3.0.0RC1, Copyright (c) 2002-2020, by Derick Rethans

$ docker-compose exec app composer --version
Composer version 2.0.7 2020-11-13 17:31:06

成果物

GitHubにあげてあるので参考にどうぞ
Dockerfileの最終状態もリポジトリにあげてあります

https://github.com/hrs-o/PHP8.0RC-Laravel

PHP7.4 時代のDockerfile

  • この7.4時代のDockerfileを8.0RC用に書き直していくのが主目的
FROM php:7.4-fpm-alpine

RUN apk upgrade --update && \
    apk --no-cache add autoconf build-base git libxml2-dev libzip-dev oniguruma-dev openssh rsync

RUN docker-php-ext-install -j$(nproc) zip pdo_mysql mysqli
RUN docker-php-ext-install -j$(nproc) bcmath fileinfo ctype json mbstring tokenizer xml
RUN docker-php-ext-install -j$(nproc) opcache

RUN pecl install apcu \
    && docker-php-ext-enable apcu

RUN pecl install xdebug \
    && docker-php-ext-enable xdebug

RUN pecl install redis  \
    && docker-php-ext-enable redis

RUN curl -sS https://getcomposer.org/installer | php \
    && mv composer.phar /usr/local/bin/composer \
    && composer self-update

RUN composer global require hirak/prestissimo
RUN composer global require squizlabs/php_codesniffer
RUN composer global require friendsofphp/php-cs-fixer
RUN composer global require phpmd/phpmd
RUN chmod 777 /var/log/

ENV PATH "/root/.composer/vendor/bin:$PATH"

試したこと

Imageを8.0-rc-fpm-alpineに変更

当然というか流石にbuild通らず

FriendsOfPHP/pickleの利用

  • releaseから取得したpickleだとXdebug-betaのVERSIONがうまく取得出来ずエラーになってしまう
  • masteをビルドしてね、とのことだがxdebugのbetaのVERSIONがパースエラーになるため利用出来ない
  • そのためForkして自リポジトリで修正した状態で利用することに(PR自体は送信済み、受け入れられると嬉しい)
    • 現状pickleはcomposer1でないと利用出来ないのでComposer1のイメージでビルドしてからPHP8.0の方にCOPY
  • peclでインストールしていた部分をpickleに変更することでapcu、xdebug-beta、redisのインストールができた
FROM composer:1 as pickle

RUN cd /tmp \
    && git clone https://github.com/hrs-o/pickle.git \
    && cd pickle \
    && git checkout update/dumper-stability \
    && composer install --no-dev --optimize-autoloader \
    && php -d phar.readonly=0 box.phar build

FROM php:8.0-rc-fpm-alpine

COPY --from=pickle /tmp/pickle/pickle.phar /usr/local/bin/pickle

hirak/prestissimoがインストールできない

  • hirak/prestissimoは現状Composer2に未対応のようなので一旦諦め。
    • というかComposer2は高速だからprestissimo使わなくていいよね!ってリポジトリに記載有り。

ということでここまでで一応Dockerfileの修正は終わったのでLaravelのインストールと動作確認をしていく。

Laravelのインストール

$ mkdir src
$ docker-compose exec app composer create-project --prefer-dist laravel/laravel . "8.*"

.envの設定

DB接続とRedisへの接続を試すので設定しておく

.env
~~
DB_CONNECTION=mysql
DB_HOST=php8-mysql
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=root

~~

REDIS_HOST=php8-redis
REDIS_PASSWORD=null
REDIS_PORT=6379

~~

migrate実行

$ docker-compose exec app php artisan migrate

View・Contoroller・Roterを定義し実行

内容はコミットを参照してください
https://github.com/hrs-o/PHP8.0RC-Laravel/commit/69e1aae936ff77b6c165c68f5f39576301c697f8

ひとまずDB接続、Redisへの接続も上手く行っていそう

IDEからリモートデバッグ出来るか確認

今回はIntelliJ Idea(PHPStorm)を対象とする

Xdebugの設定が変わっているので修正

https://3.xdebug.org/docs/upgrade_guide

php.ini
[xdebug]
- xdebug.remote_enable = 1
+ xdebug.mode = debug
- xdebug.remote_autostart = 1
+ xdebug.start_with_request = yes
- xdebug.remote_host = host.docker.internal
+ xdebug.client_host = host.docker.internal
- xdebug.remote_port = 9000
+ xdebug.client_port = 9003
xdebug.remote_log = /tmp/xdebug.log
xdebug.idekey = PHP8

XDEBUGのPort設定

  • Languages & Frameworks > PHP > Debug 内のXdebug portを 9003 に変更

PHP Remote Debugの設定

  • Edit Configurations を開く
  • 左上の+ を押して PHP Remote Debug を選択
  • Filter debug connection by IDE keyにチェックを入れる
  • IDE keyに PHP8を入力

image.png

  • Server の横にある .. を押す
  • Serversダイアログ左上にある + を押してサーバーを追加
  • Hostに localhostを設定
  • Portに 58080 を設定
  • Use path mappings にチェック
  • Project filesのsrcに対応するAbsolute path on the serverに /src を記述してOK

image.png

リモートデバッグ実行

  • コードの適当なところにブレークポイントを設定
  • 作成したPHP Remote Debugをデバッグ実行
  • ブレークポイントを設定したコードを通る処理の実行

今回、自分の環境ではステップ実行出来るのは確認済み

まとめ

  • 書いてみると単純なことばかりだけどpickle周りはとてもてこずった
  • というかほとんどpickleのソースリーディングと修正に時間かった
  • 実際利用する際にはライブラリがcomposer2に対応しておらず使えないこともまだ多そうなので何ともだがPHP8に向けて触っていく位の構築はできたんじゃないかなと

参考

【PHP8.0】PHP8.0の新機能
【PHP8】Docker で PECL の YAML 関数(YAML パーサー)をインストールして使う

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Laravel基礎】複数のテーブルの結びつけ【リレーション】

概要

Laravel学習で自分がつまずいた部分を備忘録としてまとめています。
今回は複数のテーブルの結びつけに関する記事です。

この記事でわかる事

テーブルの結合方法(リレーション)
①テーブルの主従関係
②テーブルの設定
③モデルの設定

以下、記事内容です!

テーブルの主従関係

今回はPostテーブルとCommentsテーブルを用意して、結合します。

こうした複数テーブルの結合をリレーションと呼びます。
そして、リレーションにおいて重要なのが主従関係です。
一方のテーブルが主テーブル・もう一方が従テーブルとなり、
この主従関係によって書くコードが変わってきます。

今回の場合だと、Post(記事)に対してComments(コメント)がつくので、
Postテーブルが主、Commentsテーブルが従という関係になります。
ブログのイメージですね。記事がまず先にあって、それに対してコメントがつく。
Twitterだと、まずユーザーがいて、そこから投稿が生まれる。
それが無いと成り立たない側のテーブルが主テーブルになります。

従テーブルは主テーブルのIDを保管するフィールドを用意する必要があります。
このフィールドを外部キーと呼びます。

これを踏まえて、テーブルを設定していきます。

テーブルの設定

今回はPostテーブルとCommentsテーブルを用意しました。
■Postテーブル

posts_table.php
   public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->increments('id');
            $table->string('title');
            $table->text('body');
            $table->timestamps();
        });
    }

まずは主テーブルになるPostsテーブル。
こちらは通常通りですね。ID,title,body,投稿日時を設定しました。

■Commentsテーブル

comments_table.php
     public function up()
    {
        Schema::create('comments', function (Blueprint $table) {
            $table->increments('id')          
         ①$table->integer('post_id'); 
            $table->string('body');
            $table->timestamps();
          ②$table->foreign('post_id')
                  ->references('id')
                  ->on('posts')
                  ->onDelete('cascade');
        });
    }

従テーブルになるCommentsテーブルですが、
従テーブルでは下記2つの設定をする必要があります。

①外部キーの作成
主テーブルのIDを保管するためのフィールドを作成しておきます。
今回はPostテーブルのidを保管するので、'post_id'フィールドとします。

②外部キーの参照先を設定
記事が消された際、紐づくコメントも消されるように設定しないといけません。
ここでは外部キーの参照先を指定し、参照先のデータが消えたら、このテーブルのデータも一緒に消えるよう指示しています。
各コードの内容は下記のような感じですね。
// foreign(フィールド) = このフィールドは下記を参照します
// references(フィールド) = 参照先のフィールド
// on(テーブル名)      = 参照先のテーブル
// onDelete('cascade'); = 上記が削除されたら該当データも一緒に削除

以上がテーブルの設定です。

モデル

次に、モデルの更新です。
まずは主テーブルとなるPostモデルを更新します。
■Postモデル(主)

Post.php
    class Post extends Model
{
    protected $fillable = ['title', 'body'];

    // ①Commentモデルとの紐付け
    public function comments() {
        return $this->hasMany('App\Comment');
    }
}

①commentテーブルとリンクさせるためのcomments関数を作成します。
主テーブルでは、
$this -> hasMany(参照先モデル)とする事で
従テーブルのデータを引っ張ることが可能になります。

■Commentモデル(従)
次にCommentモデルを更新します。

Comment.php
    class Comment extends Model
{
    //
    protected $fillable = ['body'];

    // ②Postモデルへの紐付け
    public function post() {
    return $this->belongsTo('App\Post');
    }

}

②Postテーブルとリンクさせるためのpost関数を作成します。
従テーブルでは、
$this -> belingsTo(参照先モデル)とする事で
従テーブルのデータを引っ張ることが可能になります。

belongToは所属すると言う意味なので、主テーブルに従ずると言う感じですね。

リレーションの確認

ここまでで、テーブルが結合できたかターミナルで確認します。
まずはPostテーブル→Commentsテーブルの確認。
ここでは(①) App\Post::find(2)->comments;によって、
PostテーブルのID:2のデータを呼び出し、
紐づくCommentsテーブルのデータを呼び出しています。

ターミナル
>>>
(①) App\Post::find(2)->comments;

       App\Comment {#3962
         id: "3",
         post_id: "2",
         body: "test",
         created_at: "2020-11-18 17:48:51",
         updated_at: "2020-11-18 17:48:51",
       },
     ],
   }
>>> 

こうですね。紐づくコメントの中身が出てきたのでOKです。

次にCommentsテーブル→Postテーブルへのリレーションを確認します。

ターミナル
>>> App\Comment::find(3)->post;
=> App\Post {#3963
     id: "2",
     title: "title 2",
     body: "body 2",
     created_at: "2020-11-18 17:55:50",
     updated_at: "2020-11-18 17:55:50",
   }
>>> 

こちらも出てきたのでOKです。

まとめ

以上、Laravelにおけるテーブルのリレーションでした。
初めは、hasMany( )とbelongTo( )の違いがよくわからなかったのですが、
主従関係と言う概念を理解すると、違いが腹落ちしました。

最後まで読んで頂きありがとうございました!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[laravel] doctrine/dbalを入れたのに「Class 'Doctrine\DBAL\Driver\PDOMySql\Driver' not found」と言われる

DB設計の変更により
テーブルのカラムの型変換をしようとしました。

database/migrations/2020_11_17_203408_modify20201117_stations_table.php
    public function up()
    {
        //
        Schema::table('stations', function (Blueprint $table) {
            $table->smallInteger('xxxxx')->nullable()->default(NULL)->change();
        });
    }

php artisan migrate するとエラーが出ました。

Migrating: 2020_11_17_203408_modify20201117_stations_table

   RuntimeException 

  Changing columns for table "stations" requires Doctrine DBAL. Please install the doctrine/dbal package.

おっといかん、doctrine/dbal を入れないまま change() してしまったか…
composerでインストールせねば

$ composer require doctrine/dbal

Using version ^3.0 for doctrine/dbal
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 4 installs, 0 updates, 0 removals
...

よし入った
改めてphp artisan migrate

Migrating: 2020_11_17_203408_modify20201117_stations_table

   Error 

  Class 'Doctrine\DBAL\Driver\PDOMySql\Driver' not found

ん?

え、今入れたよね?
あ、エラーの内容が最初と違う?

該当のファイルが存在しないとのことなので
vendor以下を確認してみる

$ ll vendor/doctrine/dbal/src/Driver/
...
-rw-rw-r--. 1 vagrant vagrant  168 Nov 15 18:20 Middleware.php
drwxrwxr-x. 4 vagrant vagrant  144 Nov 15 18:20 Mysqli
drwxrwxr-x. 3 vagrant vagrant  175 Nov 15 18:20 OCI8
drwxrwxr-x. 7 vagrant vagrant  153 Nov 15 18:20 PDO
-rw-rw-r--. 1 vagrant vagrant 2497 Nov 15 18:20 Result.php
-rw-rw-r--. 1 vagrant vagrant  397 Nov 15 18:20 ServerInfoAwareConnection.php
...

なるほど、PDOはあるけどPDOMySqlはないな。

$ ll vendor/doctrine/dbal/src/Driver/PDO/
...
-rw-rw-r--. 1 vagrant vagrant  591 Nov 15 18:20 Exception.php
drwxrwxr-x. 2 vagrant vagrant   24 Nov 15 18:20 MySQL
drwxrwxr-x. 2 vagrant vagrant   24 Nov 15 18:20 OCI
drwxrwxr-x. 2 vagrant vagrant   24 Nov 15 18:20 PgSQL
...

PDOディレクトリの下にMySQLがあるな…
えーとつまり、バージョンが変わって、ディレクトリの構成が変更になったとかそういうことかな?

https://github.com/doctrine/dbal

3.0系の構成を確認してみる
https://github.com/doctrine/dbal/tree/3.0.x/src/Driver
image.png

うん、インストールされているのはこの構成だ。
では前のバージョンは…

https://github.com/doctrine/dbal/tree/2.12.x/lib/Doctrine/DBAL/Driver

image.png

あっPDOMySqlさんいる

えーとつまり

  • composer require doctrine/dbalだけでインストールすると、今は3.x系が入ってしまう
  • 3.x系はDriverディレクトリの構成が変わっているので、migrateする時に2.x系にあったPDOMySqlがnotfoundになる

ということか

$ composer require "doctrine/dbal:2.*"

./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 0 installs, 1 update, 0 removals
  - Downgrading doctrine/dbal (3.0.0 => 2.12.1): Downloading (100%)     
...
$ php artisan migrate
Migrating: 2020_11_17_203408_modify20201117_stations_table
Migrated:  2020_11_17_203408_modify20201117_stations_table (133.37ms)

doctrine/dbal をバージョン指定で入れ直し、無事migrateできました。

※バージョンによる今だけの一時的な現象だと思いますが、そこそこ迷走したので、誰かの手助けになれば。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

成果物を作る際に行った、要件定義 DB設計など

こちらの記事にプロダクト実装前に行うべき事がまとめられておりました。
私自身も成果物作成の際に、要件定義などを行ったので、今回の記事はこちらに沿って残していこうと思います。
https://qiita.com/Saku731/items/741fcf0f40dd989ee4f8

成果物のURL▼
http://share-noske55.com/top

要望:解決すべき課題(仮想サービスなので自分があったらいいなと思うサービスを作成)

現状の課題

今回想定したのは、コンビニの廃棄商品について
コンビニでは日々大量の廃棄物が出ている。
本来捨ててしまうその食品を通常価格より安く販売したら、コンビニ側も売上が増え、利用者側(廃棄を買う側)も安く食品を手に入れられる。
幅広く誰でも簡単に使えるように、シンプルに購入できるようなアプリを作る事をゴールとする。

要求

具体的に実装したい機能一覧

① 利用者側は、メールアドレス、パスワードでユーザー登録ができること
② コンビニ側はコンビニ名、支店名、住所、TEL、店長名、メールアドレス、パスワードでユーザー登録ができること
③ コンビニ側と利用者側のユーザ登録画面、ログイン画面はそれぞれ作成する

④ コンビニ側も利用者側も、ログイン・ログアウトできるようにする
⑤ コンビニ側も利用者側も、パスワードリマインダーでパスワード忘れの際に変更対応が可能である
⑥ コンビニ側は商品を投稿機能、商品情報編集機能、商品編集画面から削除できる機能がある
⑦ 利用者側もコンビニ側も、登録された商品を商品一覧画面で一覧表示でみれる
⑧ 利用者側は「購入済でない商品」ならば商品詳細画面内の購入ボタンを押すことができるようにする
⑨ 購入ボタンを押すと、コンビニ側・利用者側の両方に必要な情報を記載したメールを送る
⑩ 購入ボタンを押すと、商品が「購入済」状態になり、一覧画面で表示するときに「購入済」のラベルを付ける
11 「購入済」状態の商品の、商品詳細画面では、購入ボタンが押せないこと
12 自分が購入した商品の、商品詳細画面では、「購入をキャンセル」ボタンが表示されるように
13 コンビニ側のマイページからは、「ユーザ情報の編集」「商品出品」「商品情報編集」「出品した商品の一覧表示」 
  「購入された商品の一覧表示」が行える
14 ユーザ側のマイページでは、「ユーザ情報の編集」「購入済み商品一覧」「購入キャンセル」が行える
15 Twitterで商品を不特定多数の人がシェアできること(ブログにあるようなシェアボタンと同じ)

以上の項目を最低でも組み込んで制作する事を目指しました。

その他注意する事

① 食品を扱うので、食欲をそそるようなサイトカラーで制作をする
② レスポンシブ対応をする
③ CSS設計を行い、回収しやすい状態を目指す。

開発環境

LAMP環境
Laravel 5.8
PHP 7.4
CSS SASS 設計はFLOCSS
laravel.mixを使いコンパイル・バンドルを行った。
フロントは、Vue.js Javascriptを使用

画面設計・データ設計

必要な画面をまず洗い出しました。

今回の場合、ユーザーとコンビニサイドに分けて考えてあります。

ー共有画面ー

1.TOP画面
2.お問い合わせ
3.ヘッダー
4.フッター

ーコンビニサイドー

1.コンビニ側ユーザー登録
2.コンビニ側ログイン
3.コンビニ側プロフィール編集
4.コンビニ側出品した商品一覧
5.商品詳細画面
6.コンビニ側マイページ 
7.コンビニ側購入された商品一覧
8.コンビニ商品出品画面
9.商品編集画面 

ーユーザーサイドー

1.利用者側ユーザー登録
2.利用者側ログイン
3.利用者側プロフィール編集
4.利用者側商品一覧
5.利用者側マイページ
6.利用者側購入した商品一覧

洗い出した各画面をXDを使って作成

今回画面遷移の流れを書かなかったので、次回以降は画面遷移の流れも書き込んでおくとより分かりやすいと感じた。
デザインカンプ Haiki_share.png

データベース設計

ER図を作成して、事前にデータの流れを可視化する事で、開発をスムーズに進める事が出来た。
※後に、マイグレーションを使ってカラムの追加を行っている。
お気に入り機能とカートに入れる機能も後に追加できるように一応テーブルを作成した(現在未実装)
スクリーンショット 2020-11-18 14.09.48.png

データベースの具体的な中身

ユーザー情報

名前
メールアドレス

ストアー情報

店名
支店名
住所
メールアドレス
パスワード

商品情報

商品名
商品カテゴリー
値段
賞味期限
画像
商品出品店舗

商品カテゴリー

カテゴリー名

購入履歴

購入された商品ID
購入したユーザー
出品していたストアー
購入された日時

CSS設計に関して

前回アウトプットを作った際に、Sassを入れるのにてこずったこともあり、今回は最初に何をどこに書くのかを想定して望んだ。
ディレクトリ構成は下記のようになる。
CSS設計.png

命名規則については、https://qiita.com/manabuyasuda/items/dbb76ed36970bec95470
こちらの記事を参考にさせていただきました。
BootStrapのCSSの付け方を参考にして付けている。
深くても、2回ネストする程度の深さを意識して設計を行った。

上記の項目を制作前に設計し臨んだ。

成果物を作り終えて

今回成果物を作る工程に入る前に設計をした事で、作る際にはかなりスムーズに作成する事が出来た。
CSS設計に関しては、まだまだ経験不足を感じる事もあり、かなり不要なディレクトリもあったので今後も経験を積んでこの辺の感覚を掴んでいきたいと思う。

今回は自分用の成果物であった為、このくらいの設計でもよかったが、チームで共有する場合も考慮すると
もっと情報がわかりやすく整理されているものを作成する必要があるとも感じた。

今後は、こちらの参考記事にもあるような詳細な設計を書けるようにしようと思う。

https://qiita.com/Saku731/items/741fcf0f40dd989ee4f8

今後について

laravel、PHPについてはかなり触ったと感じているので、今後はJavaScriptだけを使ったアプリの制作を行い
JavaScriptについての知識を深めると共に引き出しを増やしていこうと考えている。

こちらに関しては、大きなプロジェクトではなく部品をちょこちょこ作成していく。
理由としては、実際の業務でも機能ごとに実装する方が多いと感じた為である。

今回の記事についてはこれで終了とする。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Laravelで同時ログイン禁止を実現する

Laravelで同時ログイン禁止(後勝ち)処理を追加するために調査した結果、
私の中でのベストプラクティスを書き留めておきます。

同時ログイン禁止(後勝ち)とは

ここでは、同時ログイン禁止(後勝ち)の処理を以下のように定義します。

あるユーザーが、端末Aでログインしているとき、同じアカウントを使用して、別の端末Bでログインを試行すると、
端末Bでのログインが許可され、端末Aでログインしているユーザーは強制ログアウトされる処理のこと。

実現のための方針

実装方法はいくつかあるかと思いますが、なるべくフレームワークのソースに手を加えることなく、
メンテナンスが容易になるようなシンプルな調整に留めることを目標としました。

※ そのため、今回ご紹介する方法は、 Laravel 5.6 以上 を使用する必要があります。

実装手順

AuthenticateSession ミドルウェアを有効にする

Laravel 5.6 より、現在のユーザーの現在のデバイス上のセッションを切らずに、
他のデバイス上のセッションを無効化し「ログアウト」させることができるようになりました。

今回は、これを使用するため、app/Http/Kernel.phpクラスのwebミドルウェアグループ中に、
Illuminate\Session\Middleware\AuthenticateSessionミドルウェアが存在し、コメントを外すことを忘れずに行います。

app/Http/Kernel.php
'web' => [
    // ...
    \Illuminate\Session\Middleware\AuthenticateSession::class,
    // ...
],

ログイン直後に他のデバイス上のセッションを無効化する

ログイン直後の処理として、AuthファサードのlogoutOtherDevicesメソッドが実行されるようにしてください。
このメソッドは、入力フォームからアプリケーションが受け取る、現在のパスワードを引数に渡す必要があります。

app/Http/Controllers/Auth/LoginController.php
<?php

use Illuminate\Http\Request;

protected function authenticated(Request $request, $user)
{
    auth()->logoutOtherDevices($request->input('password'));
}

以上により、後勝ちの同時ログイン禁止処理が実現できたかと思います。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Laravel で「Server error: GET http://cabinet.laravel.com/latest.zip resulted in a 522 Origin Connection Time-out response:」エラー

Laravel で久しぶりに laravel new blog のコマンドを打ってプロジェクトを作ろうとしたらタイトルのエラーが発生した。

laravel% laravel new blog
Crafting application...

In RequestException.php line 113:

  Server error: `GET http://cabinet.laravel.com/latest.zip` resulted in a `52  
  2 Origin Connection Time-out` response:                                      
  <html>                                                                       
  <head><title>522 Origin Connection Time-out</title></head>                   
  <body bgcolor="white">                                                       
  <center><h1>522 Origin Conne (truncated...)                                  


new [--dev] [--auth] [-f|--force] [--] [<name>]

困ったらstackoverflow

Laravel News に載っている通りインストーラーアップデートしなさいって書いてありました。
https://stackoverflow.com/questions/64686037/why-do-i-get-a-laravel-error-while-creating-a-new-project

解決方法
composer global require "laravel/installer:^4.0"

上ので私は解決しました。それでダメならアンインストールとインストールとか試しなさいだそうです。

【詳細は下記参照】
https://laravel-news.com/updating-the-laravel-installer

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む