LoginSignup
0
0

More than 1 year has passed since last update.

【Laravel 9.x】 artisanで失敗するエラーは./vendor/bin/sailが関係しているかも

Posted at

この現象は、私同様、Laravelを試してみようという人が中心に引っかかる罠だと思われる。

背景と対策

Laravelを下記のように立ち上げた際に、その後マニュアルやチュートリアル通りに進めようとすると、artisan呼び出しの際に様々なエラーが発生する。

下記はWindows環境でDocker Desktopを入れた後に、WSLから下記のように入力するだけで環境の構築が終わるとLaravelのマニュアルにあるので、それに倣った形だ。

$ curl -s https://laravel.build/sample-app | bash
$ cd sample-app && ./vendor/bin/sail up
$ php artisan about

これらはartisanの呼び出しを php artisan から ./vendor/bin/sail artisanに変更すると解決する。どこかに書いてあるのに、見逃しているんだろうな...。

見られる現象

少し試しているだけでもかなり引っかかった。

1. .env用のキー生成ができない

.envファイルのキー文字列を生成するためにartisanを使用するとある。マニュアルで確認すると下記の1行で一発なのだが、これがうまくいかない。

$ cd sample-app
$ php artisan key:generate

結局、アレがないこれがないと入力し続けた結果処理を行うには下記の準備をして最小構成ではなくDocker形無しである

$ sudo apt update -y 
$ sudo apt upgrade
$ apt install php-cli php-dom
$ cd sample-app
$ php artisan key:generate

これは下記が正解。

$ cd sample-app
$ ./vendor/bin/sail artisan key:generate

2. migrateできない

$ php artisan migrate
   Illuminate\Database\QueryException
   could not find driver 
   (SQL: select * from information_schema.tables 
    where table_schema = sample_app 
        and table_name = migrations 
        and table_type = 'BASE_TABLE')
   at vendor/laravel/framework/src/Illuminate/Database/Connection.php:759
(...以下省略)

MySQL接続ドライバがないとかそんなエラーになると思うのですが、おかしいでしょ。
ネットを探索しても、解決方法は、MySQLConnectionエラーが発生する原因を特定するための特殊なMySqlConnectionを作って..って遠回りなものが検索結果として出てきます。

難しいです。

Sailで準備した場合は下記が正解です。

$ ./vendor/bin/sail artisan migrate

3. migrationファイルの権限がない

上記のエラー試行錯誤して ./vendor/bin/sail artisan で解決した後、
今度はファイルのアクセス権限がなくなります。

$ ./vendor/bin/sail artisan migrate
In Filesystem.php line 210:

  chmod(): Operation not permitted

私のような人は「今度は./vendor/bin/sail 使っているのに...?」となります。

これは、php artisan migrateで作成したファイルのアクセス権限がない事で発生します。php artisan migrateで生成されたファイルは権限を変更するか、いったん削除することで解決します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0