20200405のlaravelに関する記事は9件です。

Docker for MacのLaravel アプリケーションのが遅い?それ、ファイルをいっぱいマウントしてるからかもです。

はじめに

皆さんこんにちは!
tyamahoriです。

普段はLaravel/PHPを利用してシステム開発しています。基本的にLocal開発環境はDocker for Macを使って構築しています。

お恥ずかしい話しながらこれまでDocker for Mac、遅いなぁ。。と思いながら開発をしていました。ただ、さすがに我慢できなくなってきたので色々と調べながらある程度速度を改善することができたので、コチラにまとめて行きたいと思います。

結論

ファイルのマウントを極力少なくする!

これです。今までのLocalのDocker環境の構築に追いて、無頓着にファイルのマウントを行っていました。これは遅いわけです。。先人の知恵を参考にさせていだきました。

その他にもよくあるのがdocker-syncを導入する案。これに関してはそのとおりなのですが、docker-syncを導入しなくては行けなかったり、それ用にymlファイルなどを書かなくてはいけないので、ちょっと面倒なんですよね。。

というわけで

Laravel プロジェクトに以下のファイルをローカルのMacにマウントしないやり方で改善ができました。

  • vendorディレクトリ
  • storageディレクトリ

実際の方法

docker-compose.yml を見てもらった方が速いかと思います。

コードはコチラ

docker-compose.yml
version: '3'

services:
  laravel-docker-for-mac-nginx:
    image: nginx:1.17.9
    container_name: laravel-docker-for-mac-nginx
    ports:
      - 80:80
    environment:
      TZ: Asia/Tokyo
    volumes:
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
      - ../../laravel/public:/opt/laravel/public
      - storage-volume:/opt/laravel/storage #ここがポイント
    depends_on:
      - laravel-docker-for-mac-php

  laravel-docker-for-mac-php:
    build: php
    container_name: laravel-docker-for-mac-php
    volumes:
      - ../../laravel:/opt/laravel
      - vendor-volume:/opt/laravel/vendor #ここがポイント
      - storage-volume:/opt/laravel/storage #ここがポイント
      - ./php/php.ini:/usr/local/etc/php/php.ini
    working_dir: /opt/laravel
    environment:
      APP_NAME: laravel-docker-for-mac
      APP_KEY: base64:I7Rrg/XK0hG//wlbPdvURt7+VXXSDS2F+QYK3R45k/M=
      DB_CONNECTION: mysql
      DB_HOST: laravel-docker-for-mac-mysql
      DB_PORT: 3306
      DB_DATABASE: laravel
      DB_USERNAME: laravel
      DB_PASSWORD: laravel
      LOG_CHANNEL: daily
      APP_DEBUG: 'true'
      APP_ENV: local
      APP_URL: http://localhost
      TZ: Asia/Tokyo

  laravel-docker-for-mac-mysql:
    image: mysql:8.0
    container_name: laravel-docker-for-mac-mysql
    command: --default-authentication-plugin=mysql_native_password
    ports:
      - 3306:3306
    volumes:
      - db-volume:/var/lib/mysql
      - ./mysql/my.cnf:/etc/mysql/conf.d/my.cnf
    environment:
      MYSQL_USER: laravel
      MYSQL_ROOT_PASSWORD: laravel
      MYSQL_PASSWORD: laravel
      MYSQL_DATABASE: laravel
      MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
      TZ: Asia/Tokyo

volumes: #ここがポイント
  storage-volume:
    driver: local
  vendor-volume:
    driver: local
  db-volume:
    driver: local

ディレクトリ構成はこんな感じです。
Screenshot from Gyazo

GitHubにソースをアップしてますのでコチラも確認ください。
https://github.com/tyamahori/laravel-docker-env

ポイント

  1. volumesを利用し、storageディレクトリとvendorディレクトリのファイル群を格納する用にしています。Macのローカルに直接マウントしないように対応しています。
  2. これでDocker for Mac のスピード改善が見られます。

注意点あり!!

ただ単純にdocker-compose up を行い、Laravelお決まりのセットアップコマンドを行おうとするとエラーがあったり、IDE(自分の場合はPhpStorm)の補完が効かなくなったりします。ちょっとした対応が必要です。

stroageディレクトリの扱い

上記のdocker-compose.ymlでそのままdocker-compose upすると、コンテナ内部のLaravelプロジェクトの中に、storageディレクトリがありません。docker cp コマンドを利用して、初回の立ち上げ時に storageディレクトリをコンテナ内部に作るようにしました。Laravelのcache関連のファイルやDebugbarの関連ファイルがコンテナ内で保存されるようになります。

vendorディレクトリの扱い

PhpStormを使っている場合、ローカルにvendorディレクトリがないと補完が効いてくれません。。(コンテナ内部のvendorディレクトリをうまく見に行く方法があれば誰か教えてください。。自分はそこまでPhpStormを使いこなせてません。。。。)

ではどうするのか、docker cpコマンドを使ってコンテナ内部のvendorの中身をローカルのMacに持ってきます。docker cpの時間と、PhoStormが cpされたvendorディレクトリの中身を読み込む時間がどうしてもかかってしまいますが、それが終わればDocker for Macの速度が改善されます。

でもそれをコマンド叩いてやるのめんどくさい。。

安心してください!シェルスクリプトでコマンド処理をラップしました。短いコマンドでいい感じにdocker cpをしてくれるように作り込みました。その他コマンドをいくつか作ってあります。詳細はコチラ

最後に

ぜひ、お手元で試してほしいです!色々とツッコミどころあったら遠慮なくご連絡ください。

# コピペ用
$ git clone git@github.com:tyamahori/laravel-docker-env.git
$ cd laravel-docker-env/docker/formac
$ ./formac setup
$ ./formac logs # ログを出したい人用 
$ ./formac down
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Laravel で $_SERVER['QUERY_STRING'] を取得する

$_SERVER['QUERY_STRING'] が欲しかったのです。

たとえば、URL が http://example.com/hoge?piyo=1&piyo=2 であれば、

であれば piyo=1&piyo=2 部分を取得したいのです。

結論以下のように書きました。

$request->getQueryString();

これは、laravel の内部で使っている symfony が用意しているメソッドです。

laravel 該当コード

symfony 該当コード

他には、以下のようにもかけます。

str_replace($request->url(), '', $request->fullUrl());

http_build_query($request->query());

違い

$_SERVER と getQueryString の違いはエンコードされるかどうかです。

$_SERVER['QUERY_STRING']
=> "key=hoge&piyo=;alert(1)"
$query
=> "key=hoge&piyo=%3Balert%281%29"
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Laravel で $_SERVER['QUERY_STRING'] を取得するいくつかの方法

$_SERVER['QUERY_STRING'] が欲しかったのです。

たとえば、URL が http://example.com/hoge?piyo=1&piyo=2 であれば、

であれば piyo=1&piyo=2 部分を取得したいのです。

結論以下のように書きました。

$request->getQueryString();

これは、laravel の内部で使っている symfony が用意しているメソッドです。

laravel 該当コード

symfony 該当コード

他には、以下のようにもかけます。

str_replace($request->url(), '', $request->fullUrl());

http_build_query($request->query());

違い

$_SERVER と getQueryString ではエンコードに少し違いがあります。

'?a=A&b="B"&c;alert(1);&d=あ'

request()->getQueryString()
=> "a=A&b=%22B%22&c%3Balert%281%29%3B=&d=%E3%81%82"

$_SERVER['QUERY_STRING'];
=> "a=A&b=%22B%22&c;alert(1);&d=%E3%81%82"

それと、Laravel の feature テストとかだと $_SERVER の方は Undefined index: QUERY_STRING になっちゃう。

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

Laravel 使用頻度の高そうなコマンド

目的

  • Laravelで使用頻度の高そうなコマンドをまとめる
  • 自分が必要に感じたものを随時追加してゆく

ローカルサーバの起動

  • アプリ名ディレクトリで下記コマンドを実行する。

    $ php artisan serve
    

マイグレーションファイルを作成する。

  • マイグレーションファイルに命名規則はないが、どんな修正をDBに与えるのかがわかりやすいファイルである必要がある。
  1. テーブルの新規作成

    • アプリ名ディレクトリで下記コマンドを実行する。

      $ php artisan make:migration create_テーブル名_table --create=テーブル名
      
  2. 既存テーブルにカラム追加等の途中からテーブルに修正を加える

    • アプリ名ディレクトリで下記コマンドを実行する。(下記のコマンドは〇〇カラムを追加する時のコマンドの例)

      $ php artisan make:migration add_〇〇_column_テーブル名_table --table=テーブル名
      

マイグレーションファイルのマイグレート

  1. マイグレート

    • アプリ名ディレクトリで下記コマンドを実行する。

      $ php artisan migrate
      
    • ロールバック

    • アプリ名ディレクトリで下記コマンドを実行する。

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

PHP【Laravel】:POSTの設定とCSRF対策について

PHPのフレームワークLaravelでPOSTを使い値を送信する際の注意点について学んだのでメモ。

POSTを使うなんてプログラミングを学び始めの頃、見よう見まねでできたのに、何今頃つまずいているんだと凹みながら色々調べていたら、Laravelでは少し勝手が違うようだった。

まず、以下のコードを書きを実行したら、「419のHTTPステータスエラー」が出た。

ビュー

sample.blade.php 
<h1>タイトル</h1>
      <p class="name">ようこそ{{$msg}}さん</p>

  <form method="POST" action="/sample">
     名前を入力してください<br>
    <input type="text" name="msg">
    <input type="submit">
  </form>

ルーティング

web.php
Route::get('/sample', 'SampleController@test');
Route::post('/sample', 'SampleController@test');

コントローラ

SampleController.php
class SampleController extends Controller
{
  public function test(Request $request){

    $data['msg'] = $request->msg;

    return view('sample.sample', $data);
    //
  }

原因はCSRFトークン:

原因はCSRFトークンでした。
Laravelでは、クロスサイトリクエストフォージェリ対策として、CSRFトークンを使用することができます。

CSRFについて

Laravelではミドルウェアにデフォルトで

kernel.php
 \App\Http\Middleware\VerifyCsrfToken::class

という記載があります。

kernel.php
protected $middlewareGroups = [
        'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            // \Illuminate\Session\Middleware\AuthenticateSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],

なのでCSRF対策の仕組みを実際に使う必要があります。

修正

ビューに@csrfを追記。

sample.blade.php
<h1>タイトル</h1>
      <p class="name">ようこそ{{$msg}}さん</p>

  <form method="POST" action="/sample">
    @csrf
     名前を入力してください<br>
    <input type="text" name="msg">
    <input type="submit">
  </form>

もしくは、ミドルウェアで無効化(コメントアウト)。

kernel.php
protected $middlewareGroups = [
        'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            // \Illuminate\Session\Middleware\AuthenticateSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,

           // \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Laravelのartisanコマンドでルートを検索する(オプションまとめ)

概要

業務内で、Laravelで書かれているソースコードを読んでいる時に、ルーティングを効率的に検索する必要に迫られることがあります。ですので、オプションを使って効率的に検索する方法をまとめてみました。

ルート一覧の表示方法

php artisan route:list

ルートをパスから探す

php artisan route:list --path==api/user/like
+--------+--------+---------------+------+----------------------------------------------+------------+
| Domain | Method | URI           | Name | Action                                       | Middleware |
+--------+--------+---------------+------+----------------------------------------------+------------+
|        | POST   | api/user/like |      | App\Http\Controllers\LikeApiController@store | api        |
+--------+--------+---------------+------+----------------------------------------------+------------+

ルートを名前から探す

php artisan route:list --name==user
+--------+----------+------------+-------------+--------------------------------------------+------------+
| Domain | Method   | URI        | Name        | Action                                     | Middleware |
+--------+----------+------------+-------------+--------------------------------------------+------------+
|        | POST     | update     | user.update | App\Http\Controllers\UserController@update | web        |
|        | GET|HEAD | {userName} | user.index  | App\Http\Controllers\UserController@index  | web        |
+--------+----------+------------+-------------+--------------------------------------------+------------+

ルートをHTTPメソッドから探す

php artisan route:list --method=delete
+--------+--------+-------------------------------+-----------------------+------------------------------------------------------+------------------------------------------------------+
| Domain | Method | URI                           | Name                  | Action                                               | Middleware                                           |
+--------+--------+-------------------------------+-----------------------+------------------------------------------------------+------------------------------------------------------+
|        | DELETE | _debugbar/cache/{key}/{tags?} | debugbar.cache.delete | Barryvdh\Debugbar\Controllers\CacheController@delete | Barryvdh\Debugbar\Middleware\DebugbarEnabled,Closure |
|        | DELETE | delete/{delete}               |                       | App\Http\Controllers\PostController@delete           | web                                                  |
+--------+--------+-------------------------------+-----------------------+------------------------------------------------------+------------------------------------------------------+

複合検索も可能

php artisan route:list --method=post --name=like --path=unlike
+--------+--------+---------------------------+--------------+---------------------------------------------+------------+
| Domain | Method | URI                       | Name         | Action                                      | Middleware |
+--------+--------+---------------------------+--------------+---------------------------------------------+------------+
|        | POST   | user/{user}/unlike/{post} | like.destroy | App\Http\Controllers\LikeController@destroy | web        |
+--------+--------+---------------------------+--------------+---------------------------------------------+------------+

逆順で表示

php artisan route:list --method=DELETE -r

ソートの方法

php artisan route:list --method=DELETE --sort=name
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Vagantを使ってLaravelを動かす

はじめに

初学者が最初に躓きやすいと言われる環境構築ですが手順をしっかり追い、そこで何が行われているを簡単にイメージすることが大事だと痛感しました。
そこで私的メモ程度に構築手順を書き記します。
あくまで私の環境ではこの手順で動くものであって、全員がこれで動くとは限らないので参考程度でお願いいたします。
また初学者であるがゆえに問題点があるかと思います。修正箇所やご指摘いただけると幸いでございます。

この記事でやること

  1. vagarantを使ってcentOS環境の構築。
  2. その環境下でPHP、Laravel、MySQLを導入。
  3. Nginxを立ち上げ、プロジェクトにログイン機能を実装する。

今回使うもの

  • Vagrant
  • vbguest
  • CentOS7
  • Nginx
  • PHP7.3
  • Laravel6.x
  • MySQL5.7

上記に接続できる環境があることを前提に手順を追っていきます。

環境を構築してゆく

作業ディレクトリの準備

まずは仮想環境に接続できる作業スペースを作成していきます。

ターミナル上でLinuxコマンドで作業ディレクトリを作成します。

今回は仮にvagrant_lessonとします。

mkdir vagrant_lesson cd vagrant_lesson

ディレクトリ移動後に使用するboxを指定してあげましょう。

今回はcentOS7を使用します。

vagrant init centos/7

# 実行後以下のようになれば成功
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

vagrantfileの編集

vagrant_lessonのVagrantfileをエディタで開き、以下記述に変更します。

1 コメントアウトを外す

config.vm.network "forwarded_port", guest: 80, host: 8080
# 今回ip番号は以下を使用します
config.vm.network "private_network", ip: "192.168.33.15"

2 記述を適当な箇所に追加

config.vm.synced_folder "./", "/vagrant", type:"virtualbox"

vagrantの起動

# Vagrantfileがあるディレクトリにて以下コマンドの実行
vagrant up

macbook air だとここあたりからpcがうなりだすかもしれませんがゆっくり見守ってあげましょう。
ちなみに起動や停止などのコマンドはこちらを参考
【まとめ】Vagrant コマンド一覧

仮想環境に接続する

ssh接続で環境に接続します。

今回作業するディレクトリ内で以下コマンドを実行するだけです。

vagrant ssh

# 実行後以下のようになれば成功
[vagrant@localhost ~]$

パッケージの導入

開発を使用する上で必要なパッケージをインストールします。

仮想環境につながった状態で以下コマンドを実行します。

[vagrant@localhost ~]$ sudo yum -y groupinstall "development tools"

これで作業するディレクトリの下準備が完了しました。

続いて実際に環境構築していきます。

環境構築~導入編~

このセクションでは環境構築に必要なものを仮想環境にインストールしていきます。

PHP7.3の導入

centOSのデフォルトのPHPのバージョンは5.4.16です。
一方で今回使用するPHPのバージョン7.3なので、それがインストール出来るようにcentOSの設定を変更します。

変更といってもコマンドを入力するだけです。

# EPELのリポジトリを追加
sudo yum -y install epel-release wget

# インストール先を最新の状態に更新します
sudo wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

# REMIのリポジトリを追加
sudo rpm -Uvh remi-release-7.rpm

# php7.3をインストール
sudo yum -y install --enablerepo=remi-php73 php php-pdo php-mysqlnd php-mbstring php-xml php-fpm php-common php-devel

# バージョン確認
php -v
# バージョンが7.3.x であれば成功

composerの導入

次にLaravelとそれに必要なcomposerをインストールしていきます。

まずはcomposerを導入します。

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

php composer-setup.php

php -r "unlink('composer-setup.php');"

# グローバルコマンドを使用するためにfileを移動
sudo mv composer.phar /usr/local/bin/composer

# バージョン確認
composer -v

バージョンが確認できれば成功です。

Laravel6.xの導入

ではLaravelのバージョン6.xを導入していきます。

準備としてLaravelを導入するディレクトリに移動しましょう。

# 移動して
cd /vagrant

# Laravel6.0をインストール
composer create-project laravel/laravel=6.0 --prefer-dist laravel_sample

# 移動して
cd laravel_sample/

# バージョン確認
php artisan --version

# 6.xになっていれば成功です。

Nginxの導入

最新のバージョンをインストールするため以下コマンドでファイルを編集します。

sudo vi /etc/yum.repos.d/nginx.repo

下記内容を追記します。

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/\$releasever/\$basearch/
gpgcheck=0
enabled=1

入力方法は
iでインサートモードにし、編集後escでインサートを終了し:wqで保存&終了します。

間違ってしまったら:q!しましょう。

ではインストールしましょう。

# laravel_sampleでコマンド実行
sudo yum install -y nginx

# バージョン確認
nginx -v

インストール成功したらNginxを起動してみましょう。

起動コマンドは以下のとおりです。

sudo systemctl start nginx

Nginxのwelcome画面が表示されれば成功です。

環境構築~Laravel表示編~

では、今表示されているNginxの画面からLaravelのホーム画面になるように設定していきます。

Nginxの設定ファイルを編集します。

sudo vi /etc/nginx/conf.d/default.conf
server {
  listen       80;
  server_name  192.168.33.15; # Vagranfileでコメントを外した箇所のipアドレスを記述してください
  root /vagrant/laravel_sample/public; # 追記
  index  index.html index.htm index.php; # 追記

  #charset koi8-r;
  #access_log  /var/log/nginx/host.access.log  main;

  location / {
      #root   /usr/share/nginx/html; # コメントアウト
      #index  index.html index.htm;  # コメントアウト
      try_files $uri $uri/ /index.php$is_args$args;  # 追記
  }

  # 省略

  # 以下の該当箇所のコメントアウトを指定の箇所外し、変更する場所もあるので変更を加える
  location ~ \.php$ {
  #    root           html;
      fastcgi_pass   127.0.0.1:9000;
      fastcgi_index  index.php;
      fastcgi_param  SCRIPT_FILENAME  /$document_root/$fastcgi_script_name;  # $fastcgi_script_name以前を /$document_root/に変更
      include        fastcgi_params;
  }

続いてphpインストール時にインストールしたphp-fpmの設定fileを編集していきます。

sudo vi /etc/php-fpm.d/www.conf
;24行目近辺
user = apache
↓ 変更
user = vagrant

group = apache
↓ 変更
group = vagrant

編集が完了したらNginxを再起動してphp-fpmを起動しましょう。

# Nginx再起動
sudo systemctl restart nginx

# php-fpm起動
sudo systemctl start php-fpm

Forbidden という403エラーが出た場合

sudo vi /etc/selinux/config

この記述を変更してくだい。

# 変更前
SELINUX=enforcing

# 変更後
SELINUX=disabled

保存を反映させるためにvagrantを再起動しましょう

exit #ログアウト

vagrant reload #再起動

再起動後、ssh接続しましょう。

vagrant ssh

接続が完了したらNginxを再起動してphp-fpmを起動しましょう。

# Nginx再起動
sudo systemctl restart nginx

# php-fpm起動
sudo systemctl start php-fpm

Laravelのhomeが表示されたらエラ−解決です。

環境構築~DBに接続編~

mysqlの導入

rpmにリポジトリを追加しインストールします。

sudo wget http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm

sudo rpm -Uvh mysql57-community-release-el7-7.noarch.rpm

# インストール
sudo yum install -y mysql-community-server

# バージョン確認
mysql --version

#バージョンが確認できたら成功です

mysqlに接続

sudo systemctl start mysqld

sudo cat /var/log/mysqld.log | grep 'temporary password'

#以下表示される。文末がパスになるのでコピーする
2017-01-01T00:00:00.000000Z 1 [Note] A temporary password is generated for root@localhost: ********

mysql -u root -p

#パスワードが求められるので先程コピーしたものを入力
Enter password: ********

接続後パスワードを変えます。

-- パスワードはダブルクオーテーションで囲む
mysql > set password = "新たなpassword(必ず大文字小文字の英数字 + 記号かつ8文字以上)";

DBを作成

最後に実際に使用するDBを作成しましょう。

mysql > create database DBの名前;

-- 以下表記で成功
Query OK, 1 row affected (0.00 sec)

作成したプロジェクトに登録・ログイン機能を実装してゆく

仮想環境に繋いだまま、作成したlaravel_sampleに移動しましょう。

移動後、以下コマンドを実行するだけでLaravelホーム画面に登録機能とログイン機能が実装できます。

composer require laravel/ui 1.*

php artisan ui vue --auth

# 以下が表示されれば成功
Vue scaffolding installed successfully.
Please run "npm install && npm run dev" to compile your fresh scaffolding.
Authentication scaffolding generated successfully.

先程設定したhttp://192.168.33.15/を開きし、右上にregisterとloginの項目があれば成功です。

さいごに

環境構築と言われ難しいイメージを感じたかもしれませんが、何がどの役割を持っているかイメージできれば割と理解しやすいかと思います。
ただ私も6割程度の理解ですのでこれからこの辺りの知識は深める必要があると感じました。

参考サイト

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

<router-view>のタグがそのまま表示される

概要

devツールを見た時にがそのまま表示されて、内容が出てこない

解決策

  • router.jsに使用していないroutesが入っている
  • router.jsでimportしていない とこの現象が起きる。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

GitHub_Laravelのリポジトリに脆弱性アラート

発生

GitHubから何やらお知らせがきました。
スクリーンショット 2020-04-05 2.02.22.png

何だかセキュリティ的にヤバそうです。
スクリーンショット 2020-04-05 2.02.39.png

中身を開くとこんなメッセージが。
スクリーンショット 2020-04-05 2.03.20.png
スクリーンショット 2020-04-05 2.03.37.png

どうやらsymfony/http-foundationのバージョンが低いことがvulnerability(脆弱性)に繋がっているらしい。。

暫定対応

Laravelのフォルダを「symfony/http-foundation」でgrep検索し、「composer.lock」というファイルをGitHubのいう通りに書き換え。

composer.lock
"require": {
    "php": ">=5.5.9",
    "symfony/http-foundation": "5.0.7"
    "symfony/http-kernel": "~2.7|~3.0|~4.0|~5.0"
},

ローカルでLaravelアプリが正しく動作する事を確認し、
GitHubへ変更をプッシュ。エラーはクリアになりました。

恒久対応

laravel newを実行するたびにcomposer.lockファイルを毎回書き換えるのは面倒ですよね。
Laravelをアップデートすれば良い気がするので、出来たらまた書きます。

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