Mengatasi Masalah Pada Laravel dan Apache

LaravelLogo

Banyak contoh atau tutorial laravel yang menggunakan php built-in web server sebagai development server atau mungkin homestead dapat berjalan dengan normal, tetapi ketika menggunakan apache, biasanya terjadi beberapa masalah, berikut saya kumpulkan beberapa masalah yang biasa terjadi ketika laravel berjalan di apache web server.

  1. 500 Internal Server Error
    Bila tampil pesan seperti itu, kemungkinan ada kesalahan di file public/.htaccess di laravel, cara terbaik adalah dengan memeriksa di log webserver, jika menggunakan ubuntu, kita bisa melihatnya di file /var/log/apache2/error.log, jika tampil pesan :

    options not allowed

    cara yang bisa dilakukan untuk mengatasinya adalah dengan mengubah file konfigurasi apache dengan menambahkan directive options , jika menggunakan ubuntu, kita bisa membuka file di dalam folder /etc/apache2/apache2.conf

    $ sudo gedit /etc/apache2/apache2.conf

    kemudian cari bagian yang mengandung kalimat “<directory /var/www/>” , kemudian samakan dengan berikut :

    <Directory /var/www/>
     Options Indexes FollowSymLinks
     AllowOverride None
     Require all granted
    </Directory>

    akan tetapi di beberapa shared hosting tidak memperbolehkan directive option di file .htaccess, untuk mengatasi masalah tersebut adalah dengan menghapus directive options di file public/.htaccsess, buka file .htaccess kemudian samakan dengan berikut :

    <IfModule mod_rewrite.c>
     RewriteEngine On
    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]
    
    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
    
    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    </IfModule>

     

  2. File storage/logs/laravel.log tidak bisa di buka atau tampil pesan permission denied
    pada dokumentasi laravel disebutkan bahwa web server harus punya akses write pada folder storages dan bootstrap/cache, gunakan perintah berikut untuk memberikan akses ke web server :

    $ sudo chown www-data: storages
    $ sudo chown www-data: bootstrap/cache