Tutorial 23 Aug 2026 1 Kali Dibaca

Cara Mengatasi Permission Denied pada Folder Storage Laravel

Gugun Nurdiansyah
Penulis
Cara Mengatasi Permission Denied pada Folder Storage Laravel

Apa Itu Permission Denied di Laravel?

Laravel membutuhkan akses tulis ke beberapa folder, terutama:

storage/
bootstrap/cache/

Jika permission tidak sesuai, dapat muncul error seperti:

Permission denied

atau:

file_put_contents(): Failed to open stream

Masalah ini dapat menyebabkan:

  1. Upload file gagal.

  2. Cache gagal dibuat.

  3. Log tidak tersimpan.

  4. Session bermasalah.

  5. File PDF gagal dibuat.

  6. Storage link tidak bekerja.

1. Periksa Owner Folder

Pada VPS Linux, masuk ke folder Laravel:

cd /var/www/app

Kemudian:

ls -la

Periksa folder:

ls -ld storage
ls -ld bootstrap/cache

Contohnya:

drwxr-xr-x root root storage

Jika PHP-FPM berjalan menggunakan user www-data, tetapi folder dimiliki root, PHP dapat mengalami masalah permission.

2. Ubah Owner Folder

Pada Ubuntu dengan Nginx dan PHP-FPM yang menggunakan www-data:

sudo chown -R www-data:www-data storage

Kemudian:

sudo chown -R www-data:www-data bootstrap/cache

Untuk memastikan:

ls -ld storage bootstrap/cache

Hasilnya kurang lebih:

www-data www-data storage
www-data www-data bootstrap/cache

User PHP-FPM harus disesuaikan dengan konfigurasi server Anda. Jangan selalu menganggap www-data sebagai user yang benar.

3. Atur Permission Folder

Setelah owner benar:

sudo chmod -R 775 storage

Kemudian:

sudo chmod -R 775 bootstrap/cache

Permission 775 memberikan akses:

Owner  → read/write/execute
Group  → read/write/execute
Other  → read/execute

Untuk folder Laravel, pendekatan ini umumnya lebih aman daripada memberikan permission 777.

4. Hindari chmod 777

Kesalahan yang sering dilakukan adalah:

chmod -R 777 storage

Permission 777 memberikan akses baca, tulis, dan eksekusi kepada semua user.

Meskipun dapat menghilangkan error permission, cara ini dapat meningkatkan risiko keamanan.

Lebih baik perbaiki:

Owner
Group
Permission

secara tepat.

5. Periksa Struktur Storage Laravel

Struktur Laravel biasanya:

storage/
├── app/
├── framework/
│   ├── cache/
│   ├── sessions/
│   └── views/
└── logs/

Folder-folder tersebut membutuhkan akses tulis dari proses PHP.

Selain storage, Laravel juga membutuhkan:

bootstrap/cache

untuk menyimpan file cache framework.

6. Buat Storage Link

Jika file upload disimpan pada:

storage/app/public

buat symbolic link:

php artisan storage:link

Hasilnya:

public/storage
        ↓
storage/app/public

Kemudian file dapat diakses melalui:

/storage/nama-file.jpg

Jika symbolic link sudah ada tetapi bermasalah, periksa:

ls -la public/storage

7. Jika Storage Link Bermasalah

Hapus link yang salah:

rm public/storage

Kemudian buat kembali:

php artisan storage:link

Pastikan jangan menghapus folder storage/app/public yang berisi file pengguna.

8. Bersihkan Cache Laravel

Setelah memperbaiki permission:

php artisan optimize:clear

Kemudian jika production:

php artisan config:cache
php artisan route:cache
php artisan view:cache

Pastikan command tersebut dijalankan menggunakan user yang sesuai dengan environment deployment.

9. Jika Menggunakan Nginx + PHP-FPM

Contoh arsitektur:

Internet
   ↓
Nginx
   ↓
PHP-FPM
   ↓
Laravel
   ↓
storage/

Periksa user PHP-FPM:

ps aux | grep php-fpm

Atau periksa konfigurasi pool:

/etc/php/8.3/fpm/pool.d/www.conf

Cari:

user = www-data
group = www-data

Jika ternyata PHP-FPM berjalan sebagai user lain, sesuaikan owner folder Laravel dengan user tersebut.

10. Jika Menggunakan Apache

Pada Ubuntu, Apache biasanya menggunakan:

www-data

Periksa:

ps aux | grep apache

Kemudian sesuaikan owner:

sudo chown -R www-data:www-data storage
sudo chown -R www-data:www-data bootstrap/cache

11. Jika Menggunakan cPanel

Pada shared hosting atau cPanel, jangan langsung menggunakan:

chown www-data:www-data

karena user web server biasanya berbeda.

Gunakan user akun hosting sebagai owner file.

Contohnya:

chown -R username:username storage

Jika tidak memiliki akses SSH, gunakan:

cPanel
↓
File Manager
↓
storage
↓
Change Permissions

Pastikan folder dapat dibaca dan ditulis oleh user aplikasi.

12. Periksa Permission Parent Directory

Terkadang permission storage sudah benar tetapi folder induknya tidak dapat diakses.

Contohnya:

/var/www/app

Periksa:

namei -l /var/www/app/storage

Perintah tersebut membantu melihat permission setiap folder dalam path.

Semua directory yang dilewati proses PHP harus memiliki permission execute (x) agar dapat diakses.

13. Jika Menggunakan Docker

Pada Docker, masalah permission sering terjadi karena perbedaan user antara host dan container.

Periksa:

docker compose exec app ls -la storage

Kemudian:

docker compose exec app whoami

Jika container menggunakan www-data, Anda dapat memperbaiki:

docker compose exec app \
chown -R www-data:www-data storage bootstrap/cache

Setelah itu:

docker compose exec app \
chmod -R 775 storage bootstrap/cache

Konfigurasi yang tepat tetap bergantung pada user dan volume Docker yang digunakan.

14. Masalah Setelah Git Pull

Error permission sering muncul setelah deployment menggunakan Git.

Contohnya:

Deployment
↓
git pull
↓
File dimiliki user deploy
↓
PHP-FPM menggunakan user lain
↓
Permission Denied

Hindari menjalankan semua proses deployment menggunakan root jika tidak diperlukan.

Setelah deployment, periksa:

ls -la storage

Jika owner berubah, perbaiki:

sudo chown -R www-data:www-data storage bootstrap/cache

15. Permission untuk File Upload

Jika aplikasi melakukan upload:

$request->file('image')
    ->store('uploads', 'public');

pastikan:

storage/app/public

dapat ditulis oleh PHP-FPM.

Periksa:

ls -ld storage/app/public

Jika diperlukan:

sudo chmod -R 775 storage/app/public

16. Permission untuk Log Laravel

Jika muncul error seperti:

storage/logs/laravel.log:
Permission denied

periksa:

ls -la storage/logs

Kemudian:

sudo chown -R www-data:www-data storage/logs
sudo chmod -R 775 storage/logs

Jika log sebelumnya dibuat oleh root, masalah ini cukup sering muncul setelah deployment.

17. Jangan Jalankan Artisan Selalu Sebagai Root

Contohnya:

sudo php artisan migrate

kemudian file cache atau log dapat dibuat oleh root.

Akibatnya PHP-FPM tidak dapat mengubah file tersebut.

Jika memungkinkan, jalankan command Laravel menggunakan user deployment yang sesuai dengan konfigurasi aplikasi.

Checklist Permission Laravel

Gunakan urutan berikut:

1. Cek user PHP-FPM
       ↓
2. Cek owner storage
       ↓
3. Cek owner bootstrap/cache
       ↓
4. Cek permission folder
       ↓
5. Cek parent directory
       ↓
6. Cek storage link
       ↓
7. Clear Laravel cache
       ↓
8. Tes upload / logging

Perintah umum pada Ubuntu:

sudo chown -R www-data:www-data storage bootstrap/cache

sudo chmod -R 775 storage bootstrap/cache

php artisan storage:link

php artisan optimize:clear

Sesuaikan www-data dengan user PHP-FPM pada server Anda.

Kesalahan yang Perlu Dihindari

Menggunakan chmod 777

Jangan menjadikan 777 sebagai solusi utama.

Semua File Dimiliki Root

PHP-FPM belum tentu berjalan sebagai root.

Tidak Memeriksa PHP-FPM

User PHP-FPM menentukan siapa yang membutuhkan akses tulis.

Menjalankan Artisan sebagai Root

Hal ini dapat membuat file cache dan log dimiliki root.

Mengubah Permission Seluruh Project

Tidak semua file Laravel membutuhkan akses tulis.

Fokus utama biasanya:

storage/
bootstrap/cache/

Permission Laravel Bersama Ovla Media

Ovla Media dapat membantu melakukan deployment dan maintenance aplikasi Laravel, termasuk:

  1. Konfigurasi permission Linux.

  2. Nginx dan PHP-FPM.

  3. Deployment Laravel.

  4. cPanel.

  5. Docker.

  6. Storage dan upload.

  7. Database.

  8. Laravel Queue.

  9. Backup.

  10. Monitoring server.

Konfigurasi dapat disesuaikan dengan VPS, shared hosting, cPanel, Docker, maupun server internal.

Kesimpulan

Error Permission Denied pada Laravel biasanya terjadi karena user yang menjalankan PHP tidak memiliki izin untuk menulis ke folder yang diperlukan.

Folder utama yang perlu diperhatikan adalah:

storage/
bootstrap/cache/

Pada server Ubuntu dengan PHP-FPM www-data, contoh konfigurasi:

sudo chown -R www-data:www-data storage bootstrap/cache

sudo chmod -R 775 storage bootstrap/cache

Kemudian:

php artisan storage:link
php artisan optimize:clear

Yang paling penting, jangan langsung menggunakan chmod 777. Perbaiki owner dan group sesuai user PHP-FPM agar aplikasi tetap dapat berjalan sekaligus menjaga keamanan server.

#Permission Denied Laravel #Laravel Storage #Laravel Permission #Laravel Storage Link #Laravel Deployment #Laravel Linux #PHP-FPM #Nginx Laravel #Laravel cPanel #Laravel Docker #Laravel Upload File #Laravel Production #Chmod Laravel #Chown Laravel #Laravel Troubleshooting #Web Development #Aplikasi Laravel #Server Laravel #Ovla Media #Jasa Laravel
Beranda Produk Artikel
Konsultasi
OVLA

Navigasi Utama

Hubungi Kami

Mulai Konsultasi Sekarang