Setelah upload Laravel ke server, error ini sangat sering muncul:
The stream or file "/path/storage/logs/laravel.log" could not be opened
in append mode: failed to open stream: Permission denied
Artinya server tidak punya izin menulis ke folder storage. Ini murni soal permission, bukan bug kode. Berikut cara memperbaikinya.
Kenapa Terjadi?
Laravel perlu menulis ke folder storage (untuk log, cache, session, file upload) dan bootstrap/cache. Kalau user web server (mis. www-data atau apache) tidak punya hak tulis di sana, Laravel gagal dan melempar error di atas.
Solusi 1: Perbaiki Permission Folder
Beri izin tulis pada dua folder ini:
chmod -R 775 storage bootstrap/cache
Jika masih gagal, sesuaikan kepemilikan folder ke user web server:
sudo chown -R www-data:www-data storage bootstrap/cache
Ganti www-data dengan user server Anda (di beberapa hosting bisa apache, nginx, atau nama user cPanel).
Solusi 2: Di Shared Hosting cPanel
Jika tidak punya akses SSH, gunakan File Manager cPanel:
- Masuk ke folder project.
- Klik kanan folder
storageโ Change Permissions. - Set ke
755atau775, centang "Recurse into subdirectories". - Ulangi untuk
bootstrap/cache.
Solusi 3: Pastikan Folder Log Ada
Kadang folder storage/logs tidak ikut ter-upload (karena kosong dan terabaikan Git). Pastikan struktur folder ini ada:
storage/
โโโ app/
โโโ framework/
โ โโโ cache/
โ โโโ sessions/
โ โโโ views/
โโโ logs/
Buat folder yang hilang secara manual bila perlu.
Hati-hati: Jangan Pakai 777
Banyak tutorial menyarankan chmod 777. Hindari โ itu memberi akses tulis ke siapa pun dan berisiko keamanan. Gunakan 775 dengan kepemilikan yang benar sebagai gantinya.
Kesimpulan
Error "laravel.log could not be opened" selalu soal permission folder storage. Perbaiki dengan chmod -R 775 storage bootstrap/cache dan pastikan kepemilikannya sesuai user web server. Hindari 777 demi keamanan. Kalau setelah ini muncul error lain, lihat panduan kami tentang mengatasi Error 500 Internal Server Error di Laravel.