🐕

[deploy] 本番環境新規登録でエラー file_put_contents(/var/www/html/src/st...

2021/10/13に公開
file_put_contents(/var/www/html/src/storage/framework/cache/data/0c/73/0c7348042ad26c46f650f503ae217c38c0c11c51): failed to open stream: No such file or directory"

参考:
https://qiita.com/ucan-lab/items/4ad7daf12422498ab491

状況

新規登録(http://13.231.211.229:3000/signup)時(mysqlにデータがない認識なので、いったんデータを作ってみようと考えたため)以下エラーが出て詰まっています。
file_put_contents(/var/www/html/src/storage/framework/cache/data/a8/f5/a8f50fb972cf449396115cfaec0ca574b685b515): failed to open stream: No such file or directory

現在状況
フロント側(http://13.231.211.229:3000/)デプロイできている
api側(http://13.230.222.89:8000/)デプロイできている

やったこと

以下記事を参考に、「元々指定していたパスに必要な情報がなくなった時に発生するエラー」ということがわかりました。
【Laravel】エラー対処法:file_put_contents : failed to open stream: No such file or directory

念のため、appコンテナsrcディレクトリ配下で以下を実施したがエラーは変わらず

# pwd
/var/www/html/src
# php artisan config:cache
Configuration cache cleared!
Configuration cached successfully!
# php artisan config:clear
Configuration cache cleared!
# composer dump-autoload -o
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
Discovered Package: facade/ignition
Discovered Package: fideloper/proxy
Discovered Package: fruitcake/laravel-cors
Discovered Package: laravel/tinker
Discovered Package: laravel/ui
Discovered Package: laravelcollective/html
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Discovered Package: tymon/jwt-auth
Package manifest generated successfully.
Generated optimized autoload files containing 4802 classes

10/10

appコンテナの/var/www/html/src/,env以下のように変更いたし、php artisan config:cacheを実行
変更前

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=

変更後

DB_CONNECTION=mysql
DB_HOST=database-1.cotqzffqvzlc.ap-northeast-1.rds.amazonaws.com
DB_PORT=3306
DB_DATABASE=database-1
DB_USERNAME=admin
DB_PASSWORD=password

※追記

DB_DATABASE=database-1

上記指定するものを識別子ではなくRDSのデータベース名に変更

DB_CONNECTION=mysql
DB_HOST=database-1.cotqzffqvzlc.ap-northeast-1.rds.amazonaws.com
DB_PORT=3306
DB_DATABASE=BeatSpace
DB_USERNAME=admin
DB_PASSWORD=password

念のため、以下を実施

  • docker system prune
  • docker-compose build --no-cache
  • docker-compose up

※追記

php artisan migrate

この時点で確認できていること

  • ec2から以下で接続できた(appコンテナでmysqlコマンドが使用できないため、取り急ぎmysqlコンテナから接続)
[root@ip-10-0-0-25 src]# docker-compose exec mysql sh
# mysql -h database-1.cotqzffqvzlc.ap-northeast-1.rds.amazonaws.com -P 3306 -u admin -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 27
Server version: 8.0.23 Source distribution

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  • migrateが反映されていることを確認
mysql> SHOW TABLES FROM BeatSpace;
+---------------------+
| Tables_in_BeatSpace |
+---------------------+
| comments            |
| failed_jobs         |
| follows             |
| likes               |
| migrations          |
| music_files         |
| password_resets     |
| users               |
+---------------------+
8 rows in set (0.00 sec)

mysql> 
mysql> 
mysql> 
  • GUIツール(sequel ace)では接続できない?(インバウンドルールですべてのipからを追加済み)→添付画像

直接本番環境のURIでPostmanでリクエストを送った際の挙動を確認 10/12

http://13.230.222.89:8000/api/register へのリクエストで、
以下エラーがエラーが出ました!ブラウザで出たエラーと同様のものかと思われます。
原因はapi側で確定いたしました。

ErrorException: file_put_contents(/var/www/html/src/storage/framework/cache/data/24/bc/24bcbd8ae5d91bf6738a8d4c383aa9db0b32b7e8): failed to open stream: No such file or directory in file /var/www/html/src/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php on line 133

※ただ、dataフォルダ配下に差異があります。
ブラウザ

data/a8/f5/a8f50fb972cf449396115cfaec0ca574b685b515
postman
data/24/bc/24bcbd8ae5d91bf6738a8d4c383aa9db0b32b7e8

以前出ていたphp artisan optimizeでのエラー解消 10/13

https://zenn.dev/tanoken729/articles/0dfb970160b216

# pwd
/var/www/html/src
# php artisan optimize
Configuration cache cleared!
Configuration cached successfully!
Route cache cleared!
Routes cached successfully!
Files cached successfully!
# 

解決 10/13

その他のユーザーに実行権限を付与する
https://qol-kk.com/wp2/blog/2019/03/13/post-1149/#outline__1_2

# pwd
/var/www/html/src
# chmod -R 757 storage
# 
# ls -l
略
drwxr-xrwx  5 root root     46 Sep 30 22:59 storage
略
# 

※chmod -R 775 storageという記事もあったがこれではダメだった
https://github.com/laravel/framework/issues/25186

なんかキャッシュが作成されていることを確認

# pwd
/var/www/html/src/storage/framework/cache/data
# ls -la
total 4
drwxr-xrwx 13 root     root     134 Oct 13 12:49 .
drwxr-xrwx  3 root     root      36 Sep 30 22:59 ..
-rwxr-xrwx  1 root     root      14 Sep 30 22:59 .gitignore
drwxr-xr-x  3 www-data www-data  16 Oct 13 12:49 11
drwxr-xrwx  3 www-data www-data  16 Oct 13 12:23 2d
drwxr-xr-x  3 www-data www-data  16 Oct 13 12:34 47
drwxr-xr-x  3 www-data www-data  16 Oct 13 12:33 52
drwxr-xr-x  3 www-data www-data  16 Oct 13 12:33 6a
drwxr-xr-x  3 www-data www-data  16 Oct 13 12:33 6b
drwxr-xrwx  3 www-data www-data  16 Oct 13 12:21 76
drwxr-xrwx  3 www-data www-data  16 Oct 13 12:21 9c
drwxr-xrwx  3 www-data www-data  16 Oct 13 12:18 a8
drwxr-xrwx  3 www-data www-data  16 Oct 13 12:18 c4
drwxr-xr-x  3 www-data www-data  16 Oct 13 12:34 e7

その他参考

https://qiita.com/_superdry/items/c5278ce807e483ee9e8b

https://github.com/laravel/framework/blob/7.x/src/Illuminate/Filesystem/Filesystem.php#L133-L136

file_put_contents
https://www.php.net/manual/ja/function.file-put-contents.php#refsect1-function.file-put-contents-returnvalues

Discussion