laradockで環境構築したらエラーの見本市かな?というくらいにエラーが出たのでその時のエラーと解決策をまとめました。
色んなエラーが出たので参考までにどうぞ!
プロジェクトフォルダをVScode等で書き換えようとするとエラーになる
でもvimだったら変更できる、という方は権限の問題です。
workspaceのソースコードのあるディレクトリで、権限を確認してください
/var/www/app$ ls -l
/var/www/app$ ls -l
total 1600
drwxr-xr-x 14 root root 4096 Jun 3 10:27 app
-rw-r--r-- 1 root root 1686 Jun 3 10:27 artisan
drwxr-xr-x 3 root root 4096 Jun 3 10:27 bootstrap
-rw-r--r-- 1 root root 2153 Jun 3 10:27 composer.json
-rw-r--r-- 1 root root 313747 Jun 3 10:27 composer.lock
drwxr-xr-x 2 root root 4096 Jun 3 10:27 config
drwxr-xr-x 5 root root 4096 Jun 3 10:27 database
-rw-r--r-- 1 root root 1275 Jun 3 10:27 package.json
(省略)
このような感じでrootになっていたら全てのファイルをlaradockに変える必要があります。
これで解決
/var/www# chown -R laradock:laradock /var/www
/var/www以下の権限をlaradockに変更することで、コンテナ外のVScodeからでも保存できます。
root@09e56af218da:/var/www/source# ls -l
total 1604
drwxr-xr-x 14 laradock laradock 4096 Jun 3 10:27 app
-rw-r--r-- 1 laradock laradock 1686 Jun 3 10:27 artisan
drwxr-xr-x 3 laradock laradock 4096 Jun 3 10:27 bootstrap
-rw-r--r-- 1 laradock laradock 2153 Jun 3 10:27 composer.json
-rw-r--r-- 1 laradock laradock 313747 Jun 3 10:27 composer.lock
drwxr-xr-x 2 laradock laradock 4096 Jun 3 10:27 config
drwxr-xr-x 5 laradock laradock 4096 Jun 3 10:27 database
-rw-r--r-- 1 laradock laradock 1275 Jun 3 10:27 package.json
(省略)
良い感じ!
しかしこのようになっている人は、コンテナに入るコードが違っている可能性があります。laradockユーザーでコンテナに入ってください。
$ docker-compose exec --user=laradock workspace bash
MySQLのインストールバージョンを間違えた&Permission deniedで.laradock/data/mysqlが消せない
人間、間違えてはいけない時こそ間違えるんですよねぇ(遠い目)
ほんとは5.7がよかったのにやってしまった
$ docker-compose exec mysql mysql --version
mysql Ver 8.0.23 for Linux on x86_64 (MySQL Community Server - GPL)
$ cat .env | grep DATA_PATH_HOST
で探した場所にdockerの情報がはいっていて、これを消さないとここから過去のデータを引き継いでしまいます。
Dockerさんすごい賢い
$ cat .env | grep DATA_PATH_HOST
DATA_PATH_HOST=~/.laradock/data
$ rm -rf ~/.laradock/data/mysqlこれができなかったら
$ sudo rm -rf ~/.laradock/data/mysqlこっちで消し去ってください。
$ docker rmi laradock_mysql
$ docker rm (mysqlコンテナID)
$ docker ps -a
mysqlコンテナもイメージも消し去り、それを確認してください
そして今度は、laradockの.envファイルを正しく修正してください。
その後もう一度mysqlコンテナを立ち上げて、バージョンを確認してください。
$ docker-compose up -d mysql
$ docker-compose exec mysql mysql --version
mysql Ver 14.14 Distrib 5.7.31, for Linux (x86_64) using EditLine wrapper
作るDBの名前を間違えた
$ docker-compose up -d mysql
$ docker exec -it laradock_mysql_1 bash
# mysql -u root -p
Enter password:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| default |
| dev_db_1 |
| mysql |
| performance_schema |
| sys |
+--------------------+
6 rows in set (0.00 sec)
DB作ったし、内容確認…
dev_db_1じゃないの、違う名前がいいの…
そんな時も解決方法は上記MySQLのバージョンを間違えた場合と同じようにイメージとdataを消し去ってから再度コンテナを作り直して下さい。
Fatal error: require(): Failed opening required '/project/vendor/autoload.php' (include_path='.:') in /project/artisan on line 18
いざlaravel動かすぞ〜と思った矢先、動かせない
そんな時はこれで解決
/var/www/app# $ composer install
git cloneしたアプリだとvenderがないのでエラーが起こるようです。
インストールできたらOK!
Package manifest generated successfully.
87 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
SQLSTATE[HY000]: General error: 1017 Can't find file: './app/migrations.frm' (errno: 13 - Permission denied)
マイグレーションしようとしたらこんなエラーが
SQLSTATE[HY000]: General error: 1017 Can't find file: './app/migrations.frm' (errno: 13 - Permission denied)
こちらも権限がないため書き込みができない状態になっています。
自分のMySQLディレクトリの権限がどうなってるか確認しましょう
$ docker exec -it laradock_mysql_1 bash
# cd var
# cd lib
# cd mysql
/var/lib/mysql# ls
auto.cnf ca.pem client-key.pem ib_buffer_pool ib_logfile1 ibtmp1 performance_schema public_key.pem server-key.pem app
ca-key.pem client-cert.pem default ib_logfile0 ibdata1 mysql private_key.pem server-cert.pem sys
データベースの内容と諸々のファイルがでてきたらここのディレクトリです。
/var/lib/mysql# ls -l
total 188484
-rw-r----- 1 1000 1000 56 Jun 3 09:47 auto.cnf
-rw------- 1 1000 1000 1676 Jun 3 09:47 ca-key.pem
-rw-r--r-- 1 1000 1000 1112 Jun 3 09:47 ca.pem
-rw-r--r-- 1 1000 1000 1112 Jun 3 09:47 client-cert.pem
-rw------- 1 1000 1000 1680 Jun 3 09:47 client-key.pem
drwxr-x--- 2 1000 1000 4096 Jun 3 09:47 default
-rw-r----- 1 1000 1000 1359 Jun 3 09:47 ib_buffer_pool
-rw-r----- 1 1000 1000 50331648 Jun 3 10:24 ib_logfile0
省略
全部が1000になっていますね、これを全てmusqlに変更しましょう。
これで解決
# chown -R mysql:mysql /var/lib/mysql
権限を確認
# ls -l
total 188484
-rw-r----- 1 mysql mysql 56 Jun 3 09:47 auto.cnf
-rw------- 1 mysql mysql 1676 Jun 3 09:47 ca-key.pem
省略
これでいけそうですね。
mysqlコンテナから抜けてworkspaceコンテナからapp直下にはいり、migrateを実行してください
docker exec -it laradock_workspace_1 bash
# php artisan migrate
webページを開くと、No application encryption key has been specified.となる
workspaceコンテナの内部で、APP KEYを作成してください。
# php artisan key:generate
Application key set successfully.
# php artisan config:cache
Configuration cache cleared!
Configuration cached successfully!
##参考
【Laravel】Laradockで複数プロジェクトを動かす手順
https://laradock.io/getting-started/#B
[Laradock で mysql がうまく動作しない時は ( mysqlコンテナが起動しない、migration 出来ない)]
(https://qiita.com/don-bu-rakko/items/cd8f96cc9087abf601e3)
[hostsファイルの場所 Windows10]
(https://ex1.m-yabe.com/archives/4560)
[No application encryption key has been specified.となったときの対応方法]
(https://qiita.com/ponsuke0531/items/197c76fcb9300d7c5f36)
[MySQL, copying tables files gives rise to “ERROR 1017 (HY000): Can't find file:” even though its there there]
(https://stackoverflow.com/questions/12106727/mysql-copying-tables-files-gives-rise-to-error-1017-hy000-cant-find-file/12108426)
ERROR 1017 (HY000): Can’t find file: ‘./….frm’ (errno: 13) – MySQL error. How to fix?
既にあるLaradock環境をそのままに複数のLaradock環境を構築する(Windows)
[Laradock nginxでの404 not found]
(https://www.suzu6.net/posts/138-laradock-nginx-404-not-found/)