Verification: a143cc29221c9be0

Php artisan migrate could not open input file artisan

Php artisan migrate could not open input file artisan

Laravelのプロジェクト作成

任意の名称でプロジェクトを作成します。
ここでは、「laravel_auth」という名前でプロジェクトを作成しました。

$ composer create-project --prefer-dist laravel/laravel laravel_auth
$ cd laravel_auth
$ php artisan -v
Laravel Framework 7.12.0

※Laravelのバージョンを指定してインストールしたい場合、laravel/laravelの部分にバージョン情報を追加する。

$ composer create-project --prefer-dist "laravel/laravel=7.*" laravel_auth

認証機能の追加

php artisan ui vue --auth で認証機能を追加します。
Laravel5では、php artisan make:auth で認証機能が追加できましたが、Laravel7はLaravel/uiに組み込まれたため、先にLaravel/uiの追加(composer require laravel/ui)が必要です。

Laravel/uiの追加

$ composer require laravel/ui
Using version ^2.0 for laravel/ui

※Laravel/uiのバージョンを指定したい場合、バージョン情報を最後に追加する。

$ composer require laravel/ui 2.*

認証機能の追加

$ 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.

Could not open input file: artisan というエラーが出た場合、Laravelのプロジェクトディレクトリ外でコマンドを打っている可能性が高いので、cd コマンドで作成したディレクトリの中に移動します。

パッケージのインストール・ビルド

Laravel/ui に必要なCSSやJavascriptを入れます。

$ npm install
$ npm run dev

データベースの設定

データベースの作成

phpMyAdminで、新規データベースの作成をします。
ここでは、以下内容でデータベースを作成しました。

  • データベース名:laravel_auth_db
  • ユーザ名:laravel_auth_user
  • ユーザパスワード:laravel_auth_password

.envファイルの設定

laravel_multi_auth フォルダの中の .env について、データベース接続に関わる以下の項目を書き換えます。

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_auth_db
DB_USERNAME=laravel_auth_user
DB_PASSWORD=laravel_auth_password

テーブルの作成

php artisan migrate で認証に必要なテーブルを作成します。

SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table `users` add unique `users_email_unique`(`email`)) というエラーが発生する場合、 app\Providers\AppServiceProvider.php に、以下の内容を追加し、最大長未指定カラムのデフォルト最大長を191に変更します。

app\Providers\AppServiceProvider.php

+   use Illuminate\Support\Facades\Schema;

    public function boot()
    {
+       Schema::defaultStringLength(191);
    }

途中でmigrateが止まってしまった場合、中途半端にテーブルが作られてしまった状態なので、一旦すべてのテーブルを削除して作り直します。

$ php artisan migrate:fresh
Dropped all tables successfully.
Migration table created successfully.

解決

これは単純に、.circleci/config.ymlディレクトリにs3へのアップロードの記載をしていなかったことが原因でした。

config.yml

   // 省略
      - run:
          name: upload artifacts to s3
          command: aws s3 cp lantern.zip s3://${AWS_S3_BUCKET_NAME}
   // 省略

参考

スクリーンショット 2021-07-27 16.48.44.png
スクリーンショット 2021-07-27 17.30.40.png

Script does not exist at specified location
(訳)スクリプトが指定された場所に存在しません