【laravel】容量不足のエラー file_put_contents(): Only 0 of 16907 bytes written, possibly out of free disk space

laravelで”php artisan config:cache” すると上記のエラーが出ることがあります。単純に使用しているサーバの内部容量がないから、キャッシュする分すらも容量の余裕が残ってないよと怒られている感じです。

対策

容量の大きいファイルを消す、または別の環境に移動してあげましょう。以下でサーバ内のどの部分で容量を食っているのか確認できます。

# duコマンドでディスク使用量を集計する 
sudo du -sh /*
7.0M	/bin
44M	/boot
56K	/dev
11M	/etc
746M	/home
...省略
16G	/opt

上の例だと、16GBも容量を使っている/optが原因っぽいです。更にディレクトリ内部に入ってコマンドを打っていくか、/opt内のディレクトリを調べるようなコマンドで調査します。

# ディレクトリの中を更に調べていく
sudo du -sh /opt/*
43M	/opt/aaa
16G	/opt/website

sudo du -sh /opt/website/*
80M	/opt/website/20200416195307
6.6G	/opt/website/backup_220301.zip
2.2G	/opt/website/archive.zip
...

今回の場合はなんだかよく分からないzipファイルが配置されてあったので、別のストレージに写して保管して削除して容量を増やしました。これでconfig:cacheも動くはずですが…

それでも動かない

充分な容量を確保したのにconfig:cacheが動かなかったので、もう少し調べました。どうやら「ファイルを消した」というタスクの処理がサーバ内で残っているみたい(キャッシュみたいなもの?)で、そのタスクをkillしてあげる必要があったようです。

# lsofで処理中のプロセス確認 | grepでキーワードを絞り込む
sudo lsof | grep laravel.log
php       24216 user    6w      REG              202,1 2238095360     347873 /opt/website/backup_220301.zip (deleted)
php       24217 user    6w      REG              202,1 2238095360     347873 /opt/website/backup_220301.zip (deleted)
php       24218 user    6w      REG              202,1 2238095360     347873 /opt/website/backup_220301.zip (deleted)

該当しそうなタスクをkillします。

# "kill プロセスのPID"で該当しそうなプロセスのキルを行う
kill 24216
kill 24217
kill 24218

これで今度こそ動くはずですね。

まだ動かないとき

なんかまたエラーが出て怒られました。

php artisan config:cache

In PackageManifest.php line 165:                                                                                                      
  The /opt/website/bootstrap/cache directory must be present and writable. 

なんかlaravelで作られるbootstrapフォルダがおかしいみたいです。自分の場合は以下で対処。

# cacheという本来あるはずのディレクトリがないっぽかったので自分で作成
cd /opt/website/bootstrap
mkdir cache

# 中身確認
ls
app.php  cache

# 権限とりあえず777で書き込み許可に
chmod 777 cache/

# laravelディレクトリに戻ってキャッシュクリア
cd /opt/website
php artisan config:cache
Configuration cache cleared!
Configuration cached successfully!

ようやく!

タイトルとURLをコピーしました