Tutorial 23 Jul 2026 7 Kali Dibaca

Cara Mengatasi Error 403 Forbidden pada Laravel di cPanel

Gugun Nurdiansyah
Penulis
Cara Mengatasi Error 403 Forbidden pada Laravel di cPanel

Apa Itu Error 403 Forbidden?

Error 403 Forbidden adalah respons dari web server yang menandakan bahwa halaman atau file ditemukan, tetapi akses terhadapnya tidak diizinkan.

Pesan yang muncul biasanya seperti berikut:

403 Forbidden

Access to this resource on the server is denied.

Pada aplikasi Laravel yang diunggah ke cPanel, error ini sering muncul sebelum Laravel berhasil dijalankan. Artinya, masalah biasanya berada pada konfigurasi hosting, lokasi file, permission, ownership, atau aturan .htaccess.

Dokumentasi cPanel menjelaskan bahwa kode 403 muncul ketika server tidak mengizinkan pengunjung mengakses file yang diminta. Salah satu pemeriksaan pertama yang disarankan adalah memeriksa permission file dan folder. (cPanel & WHM Documentation)

Penyebab Error 403 pada Laravel di cPanel

Beberapa penyebab yang paling sering ditemukan adalah sebagai berikut.

1. Domain Tidak Mengarah ke Folder Public

Semua permintaan menuju aplikasi Laravel seharusnya masuk melalui file:

public/index.php

Folder public merupakan pintu masuk aplikasi dan berisi file yang memang boleh diakses melalui internet.

Jika domain diarahkan ke folder utama Laravel, server dapat menolak akses atau menampilkan daftar folder yang tidak diizinkan.

Struktur Laravel yang benar biasanya seperti berikut:

project-laravel/
├── app/
├── bootstrap/
├── config/
├── public/
│   ├── index.php
│   └── .htaccess
├── resources/
├── routes/
├── storage/
├── vendor/
├── artisan
└── .env

Laravel menyarankan agar web server mengarahkan seluruh permintaan ke folder public, bukan ke folder utama project. (Laravel)

2. File index.php Tidak Ditemukan

Web server membutuhkan file index sebagai halaman awal.

Jika folder tujuan domain tidak memiliki index.php, server dapat menampilkan error 403, terutama jika fitur directory listing dinonaktifkan.

Periksa apakah file berikut tersedia:

public_html/index.php

atau jika document root langsung diarahkan ke folder Laravel:

project-laravel/public/index.php

3. Permission File atau Folder Tidak Sesuai

Permission menentukan siapa yang dapat membaca, menulis, atau menjalankan file.

Permission yang terlalu terbatas dapat membuat Apache, LiteSpeed, atau PHP gagal membaca aplikasi.

Sebagai pedoman umum pada shared hosting:

Folder: 755
File: 644

Namun, kebutuhan permission dapat berbeda tergantung konfigurasi server dan ownership file.

Hindari menggunakan permission 777 karena memberikan hak baca, tulis, dan eksekusi kepada semua pengguna server.

4. Ownership File Berbeda

File yang diunggah, dipindahkan, atau diekstrak melalui proses tertentu dapat memiliki pemilik yang berbeda dari akun cPanel.

Walaupun permission terlihat benar, server tetap dapat menolak akses apabila ownership tidak sesuai.

Pada shared hosting, pengguna biasanya tidak memiliki izin menjalankan chown. Masalah ownership perlu diperbaiki oleh penyedia hosting.

5. File .htaccess Hilang atau Bermasalah

Laravel menggunakan file .htaccess pada folder public untuk mengarahkan permintaan ke index.php.

Masalah dapat terjadi jika:

  1. File .htaccess tidak ikut terunggah.

  2. Penulisannya salah.

  3. Terdapat aturan yang tidak didukung hosting.

  4. File berasal dari project atau versi Laravel yang berbeda.

  5. Mod Rewrite tidak tersedia.

  6. Terdapat aturan blokir alamat IP.

  7. Terdapat konfigurasi Deny from all.

Apache mengizinkan konfigurasi per folder melalui .htaccess, tetapi directive yang tidak diizinkan oleh konfigurasi server dapat menghasilkan error. (Apache HTTP Server)

6. Folder Storage dan Bootstrap Cache Tidak Dapat Ditulis

Laravel membutuhkan akses tulis ke folder berikut:

storage
bootstrap/cache

Folder tersebut digunakan untuk menyimpan log, cache, session berbasis file, view hasil kompilasi, dan data sementara lainnya.

Laravel menyatakan bahwa proses web server harus memiliki izin menulis ke folder storage dan bootstrap/cache. (Laravel)

7. ModSecurity atau Firewall Memblokir Permintaan

cPanel dapat menggunakan ModSecurity atau sistem keamanan lain untuk memblokir permintaan yang dianggap mencurigakan.

Pemblokiran dapat terjadi pada:

  1. URL dengan parameter tertentu.

  2. Formulir yang mengandung pola tertentu.

  3. Request API.

  4. Upload file.

  5. Permintaan dari alamat IP tertentu.

  6. Terlalu banyak request dalam waktu singkat.

Jika halaman utama dapat dibuka tetapi halaman atau tindakan tertentu menghasilkan 403, kemungkinan masalahnya berasal dari aturan keamanan server.

8. Directory Privacy Aktif

Fitur Directory Privacy pada cPanel dapat melindungi folder menggunakan username dan password.

Jika fitur tersebut aktif secara tidak sengaja pada public_html atau folder domain, pengunjung dapat mengalami masalah akses.

cPanel menyediakan fitur Directory Privacy untuk membatasi akses ke folder tertentu. (cPanel & WHM Documentation)

Cara Mengatasi Error 403 Forbidden pada Laravel

Ikuti pemeriksaan berikut secara berurutan agar penyebabnya lebih mudah ditemukan.

Langkah 1: Periksa Document Root Domain

Buka cPanel, kemudian masuk ke menu:

Domains

Periksa bagian Document Root dari domain atau subdomain yang digunakan.

Konfigurasi terbaik adalah mengarah langsung ke folder:

/home/username/project-laravel/public

Contohnya:

/home/ovlamedi/OVLAWEB/public

Dengan konfigurasi tersebut, server akan menjalankan public/index.php sebagai pintu masuk aplikasi.

Jangan mengarahkan document root ke:

/home/username/project-laravel

karena folder tersebut berisi .env, source code, konfigurasi, dan file internal lainnya.

Langkah 2: Gunakan Struktur yang Aman di Shared Hosting

Pada beberapa shared hosting, document root domain utama tidak dapat diubah dari public_html.

Anda dapat menggunakan struktur seperti berikut:

/home/username/OVLAWEB
/home/username/public_html

Folder OVLAWEB menyimpan seluruh source Laravel:

app
bootstrap
config
database
resources
routes
storage
vendor
.env
artisan

Sementara itu, public_html hanya menyimpan isi folder public Laravel:

index.php
.htaccess
build
favicon.ico
robots.txt
storage

Jangan memindahkan seluruh project Laravel ke public_html jika tidak diperlukan.

Langkah 3: Sesuaikan Path pada index.php

Jika isi folder public dipindahkan ke public_html, path pada index.php perlu diarahkan ke lokasi source Laravel.

Sebagai contoh, source Laravel berada di:

/home/username/OVLAWEB

dan file publik berada di:

/home/username/public_html

Pada Laravel versi modern, bagian path di public_html/index.php dapat disesuaikan seperti berikut:

<?php

use Illuminate\Http\Request;

define('LARAVEL_START', microtime(true));

if (file_exists($maintenance = __DIR__.'/../OVLAWEB/storage/framework/maintenance.php')) {
    require $maintenance;
}

require __DIR__.'/../OVLAWEB/vendor/autoload.php';

(require_once __DIR__.'/../OVLAWEB/bootstrap/app.php')
    ->handleRequest(Request::capture());

Nama folder OVLAWEB harus disesuaikan dengan lokasi project Anda.

Untuk Laravel versi lama, bagian akhirnya dapat menggunakan pola berbeda. Gunakan file public/index.php bawaan project sebagai dasar, lalu ubah hanya path menuju vendor, bootstrap, dan storage.

Langkah 4: Pastikan File .htaccess Tersedia

Aktifkan pilihan Show Hidden Files pada File Manager cPanel.

Setelah itu, periksa apakah file berikut tersedia:

public_html/.htaccess

Jika tidak tersedia, salin file .htaccess dari folder public project Laravel.

Contoh aturan dasar Laravel:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

Sebaiknya gunakan .htaccess asli yang berasal dari project Laravel Anda karena isi file dapat berbeda berdasarkan versi atau kebutuhan aplikasi.

Langkah 5: Periksa Permission File dan Folder

Melalui File Manager cPanel, klik kanan file atau folder, kemudian pilih:

Change Permissions

Gunakan permission dasar berikut sebagai referensi:

Folder project: 755
Folder public_html: 755
File index.php: 644
File .htaccess: 644
File PHP lainnya: 644

Pastikan folder induk juga dapat dibaca dan diakses oleh server.

Jika memiliki akses Terminal atau SSH, permission dasar dapat diperiksa menggunakan:

ls -la

Untuk mengatur file tertentu:

chmod 755 public_html
chmod 644 public_html/index.php
chmod 644 public_html/.htaccess

Jangan langsung menggunakan:

chmod -R 777

karena tindakan tersebut dapat membuka akses berlebihan ke seluruh project.

Langkah 6: Periksa Storage dan Bootstrap Cache

Masuk ke folder utama Laravel:

cd /home/username/OVLAWEB

Pastikan folder berikut dapat ditulis:

storage
bootstrap/cache

Pada banyak konfigurasi shared hosting, permission berikut dapat menjadi titik awal:

chmod -R 775 storage
chmod -R 775 bootstrap/cache

Namun, permission harus disesuaikan dengan ownership dan cara PHP dijalankan pada server.

Jika PHP berjalan menggunakan user akun cPanel yang sama, permission 755 mungkin sudah cukup. Jika masih terjadi masalah, periksa ownership atau tanyakan kepada penyedia hosting.

Langkah 7: Periksa Ownership

Gunakan perintah berikut jika Terminal tersedia:

ls -la /home/username/OVLAWEB

Perhatikan nama pemilik file dan folder.

File seharusnya dimiliki oleh akun cPanel yang sesuai.

Jika ownership berbeda dan Anda tidak dapat memperbaikinya, hubungi penyedia hosting dengan permintaan seperti berikut:

Mohon bantu periksa dan reset ownership file pada folder aplikasi Laravel karena website menghasilkan error 403 Forbidden.

Langkah 8: Uji File Sederhana

Buat file baru di public_html dengan nama:

test.html

Isi file:

<h1>Test berhasil</h1>

Kemudian buka:

https://domainanda.com/test.html

Hasil pengujian dapat membantu menentukan sumber masalah.

Jika test.html juga menghasilkan 403, masalah kemungkinan berasal dari:

  1. Permission.

  2. Ownership.

  3. Document root.

  4. Directory Privacy.

  5. Firewall.

  6. Konfigurasi server.

Jika test.html dapat dibuka tetapi Laravel tetap 403, periksa:

  1. .htaccess.

  2. index.php.

  3. Path menuju source Laravel.

  4. ModSecurity.

  5. Permission folder project.

Hapus file pengujian setelah pemeriksaan selesai.

Langkah 9: Periksa Error Log

Buka cPanel, kemudian masuk ke menu:

Metrics → Errors

Anda juga dapat memeriksa file:

public_html/error_log

Untuk log Laravel, periksa:

storage/logs/laravel.log

Contoh pesan yang perlu diperhatikan:

Permission denied
client denied by server configuration
Options FollowSymLinks not allowed here
Invalid command
File not found

Jika tidak terdapat log Laravel, kemungkinan request belum berhasil mencapai aplikasi dan masih diblokir oleh web server.

Langkah 10: Uji File .htaccess

Untuk mengetahui apakah .htaccess menjadi penyebab, ubah sementara namanya:

.htaccess

menjadi:

.htaccess-backup

Setelah itu, buka kembali halaman utama.

Jika error 403 hilang atau berubah menjadi tampilan lain, masalah kemungkinan berada di dalam .htaccess.

Kembalikan nama file setelah pengujian selesai, lalu gunakan .htaccess asli dari folder public Laravel.

Tanpa aturan rewrite, halaman utama mungkin dapat dibuka, tetapi route lain dapat menghasilkan error 404.

Langkah 11: Periksa Directory Privacy

Buka menu:

cPanel → Directory Privacy

Pastikan public_html atau folder domain tidak sedang dilindungi secara tidak sengaja.

Jika terdapat perlindungan yang tidak diperlukan, nonaktifkan lalu lakukan pengujian kembali.

Langkah 12: Periksa ModSecurity

Jika cPanel menyediakan menu ModSecurity, periksa apakah domain sedang diblokir oleh aturan tertentu.

ModSecurity lebih mungkin menjadi penyebab apabila:

  1. Hanya halaman tertentu yang menghasilkan 403.

  2. Formulir menghasilkan 403 saat dikirim.

  3. Request API ditolak.

  4. Upload file gagal.

  5. URL dengan parameter tertentu tidak dapat dibuka.

ModSecurity dapat dinonaktifkan sementara untuk pengujian jika fitur tersebut tersedia. Setelah penyebab ditemukan, aktifkan kembali dan minta penyedia hosting melakukan pengecualian pada aturan yang bermasalah.

Jangan menonaktifkan perlindungan keamanan secara permanen tanpa memahami risikonya.

Langkah 13: Bersihkan Cache Laravel

Setelah konfigurasi dan permission diperbaiki, masuk ke folder project:

cd /home/username/OVLAWEB

Kemudian jalankan:

php artisan optimize:clear

Setelah aplikasi berjalan normal pada production, jalankan:

php artisan optimize

Laravel menyediakan optimize:clear untuk menghapus cache hasil optimasi dan optimize untuk membuat cache konfigurasi, route, event, serta view pada deployment production. (Laravel)

Langkah 14: Periksa Versi PHP

Periksa versi PHP pada Terminal:

php -v

Pastikan versinya sesuai dengan kebutuhan Laravel dan dependency pada composer.json.

Pada cPanel, versi PHP domain dapat diperiksa melalui:

MultiPHP Manager

Jika versi PHP Terminal berbeda, gunakan binary PHP yang sesuai.

Contoh PHP 8.3:

/opt/cpanel/ea-php83/root/usr/bin/php artisan optimize:clear

Contoh PHP 8.4:

/opt/cpanel/ea-php84/root/usr/bin/php artisan optimize:clear

Urutan Pemeriksaan yang Disarankan

Gunakan urutan berikut untuk mempercepat pencarian masalah:

  1. Periksa document root domain.

  2. Pastikan index.php tersedia.

  3. Pastikan .htaccess tersedia.

  4. Periksa permission file dan folder.

  5. Periksa ownership.

  6. Periksa akses tulis storage dan bootstrap/cache.

  7. Uji menggunakan file HTML sederhana.

  8. Periksa error log cPanel.

  9. Uji .htaccess.

  10. Periksa Directory Privacy.

  11. Periksa ModSecurity.

  12. Bersihkan cache Laravel.

  13. Periksa versi PHP.

Kesalahan yang Perlu Dihindari

Mengubah Semua Permission Menjadi 777

Permission 777 bukan solusi yang aman dan dapat membuka akses tulis kepada pihak yang tidak seharusnya.

Memindahkan Seluruh Project ke Public HTML

Tindakan ini dapat membuat .env, source code, dan file internal lebih berisiko terakses melalui internet.

Menghapus .htaccess Permanen

Tanpa .htaccess, route Laravel selain halaman utama dapat menghasilkan error 404.

Mengubah index.php Tanpa Backup

Kesalahan path dapat membuat aplikasi gagal menemukan vendor/autoload.php atau bootstrap/app.php.

Menonaktifkan ModSecurity Permanen

ModSecurity membantu melindungi website dari permintaan berbahaya. Nonaktifkan hanya untuk pengujian dan aktifkan kembali setelah selesai.

Mengabaikan Error Log

Error log biasanya memberikan petunjuk yang lebih jelas dibandingkan mencoba berbagai perubahan tanpa arah.

Checklist Mengatasi Error 403 Laravel

Sebelum melakukan pengujian terakhir, pastikan:

  1. Domain mengarah ke folder public.

  2. index.php tersedia.

  3. .htaccess tersedia.

  4. Path pada index.php benar.

  5. Folder menggunakan permission yang sesuai.

  6. File menggunakan permission yang sesuai.

  7. Ownership file benar.

  8. storage dapat ditulis.

  9. bootstrap/cache dapat ditulis.

  10. Directory Privacy tidak aktif.

  11. ModSecurity tidak memblokir request.

  12. Versi PHP sesuai.

  13. Cache Laravel sudah dibersihkan.

  14. Error log sudah diperiksa.

Bantuan Deployment Laravel dari Ovla Media

Error 403 Forbidden pada Laravel dapat disebabkan oleh beberapa lapisan konfigurasi, mulai dari document root, permission, ownership, .htaccess, hingga sistem keamanan hosting.

Ovla Media menyediakan layanan pengembangan, deployment, perbaikan, dan pemeliharaan aplikasi Laravel.

Layanan yang dapat disesuaikan meliputi:

  1. Deployment Laravel ke cPanel.

  2. Deployment Laravel ke VPS.

  3. Pengaturan document root.

  4. Perbaikan error 403 dan 404.

  5. Konfigurasi .htaccess.

  6. Perbaikan permission dan ownership.

  7. Konfigurasi file .env.

  8. Perbaikan storage link.

  9. Konfigurasi database.

  10. Optimasi aplikasi production.

  11. Migrasi hosting.

  12. Pengembangan aplikasi bisnis custom.

Kesimpulan

Error 403 Forbidden pada Laravel di cPanel berarti web server menolak akses menuju file atau folder yang diminta.

Penyebab yang paling sering adalah document root tidak mengarah ke folder public, permission tidak sesuai, file .htaccess bermasalah, ownership berbeda, atau request diblokir oleh sistem keamanan server.

Pemeriksaan pertama yang sebaiknya dilakukan adalah memastikan domain mengarah ke:

/project-laravel/public

Jika document root tidak dapat diubah, tempatkan source Laravel di luar public_html, lalu pindahkan hanya isi folder public ke public_html.

Setelah struktur diperbaiki, periksa .htaccess, permission, ownership, folder storage, bootstrap/cache, error log, dan ModSecurity.

Hindari menggunakan permission 777 atau memindahkan seluruh source Laravel ke folder publik. Konfigurasi yang tepat akan membuat aplikasi lebih aman dan mudah dipelihara.

#Laravel #Error 403 Forbidden #403 Forbidden Laravel #Laravel cPanel #Laravel Shared Hosting #Cara Mengatasi 403 #Permission Laravel #Document Root Laravel #Public Folder Laravel #HTAccess Laravel #Laravel Deployment #Laravel Hosting #Storage Permission Laravel #Bootstrap Cache Laravel #ModSecurity cPanel #Error Laravel #PHP Artisan #Web Development #PHP Developer #Laravel Developer Indonesia #Ovla Media #Jasa Laravel #Jasa Deployment Laravel #Jasa Perbaikan Laravel
Beranda Produk Artikel
Konsultasi
OVLA

Navigasi Utama

Hubungi Kami

Mulai Konsultasi Sekarang