Symlink has been disabled for security reasons on Laravel Cpanel Shared Hosting

Symlink Laravel

Artikel ini dikhususkan buat temen-temen developer web yang menggunakan fitur storage-link pada Laravel, dan ingin mempublikasikan webnya ke server shared hosting Cpanel.

Prosesnya memang ada beberapa konfigurasi yang perlu dilakukan pada file-file laravel project web kita. Paling dasar dan utama biasanya adalah mengatur settingan pada file .env dll.

Tentu temen-temen akan menjalankan perintah atau command:

php artisan storage-link

command tersebut digunakan untuk membangun symlink antara folder storage/public/app pada laravel, dengan folder public/storage.

Hanya saja perintah tersebut tidak diizinkan digunakan pada server shared hosting, karena untuk keamanan peretasan yang mungkin bisa saja dilakukan oleh hacker melaui base terminal / sheel script.

Biasanya jika kita memaksa menggunakan fungsi itu di Laravel, maka kita akan menggunakan code berikut pada route file web.php, seperti ini:

Route::get('/linkstorage', function () {
    Artisan::call('storage:link');
});

Maka akan muncul error notifikasi:

symlink() has been disabled for security reasons

Artinya fungsi tersebut tidak dapat dipanggil atau di disable dengan alasan keamanan oleh penyedia layanan hostingnya.

Lalu, bagaimana solusinya? bagaimana nasib para developer minim budget yang baru bisa pakai server shared hosting, dan belum mampu beli server VPS?, tenang ada solusinya. Ini dia!!!

Langkah 1: Login dulu ke CPanel

Langkah 2: Cari menu terminal dan klik

menu terminal

Langkah 3: Masuk ke folder project laravel kamu, dengan command:

cd laravel

Ketik command berikut untuk melihat daftar file / folder didalam folder laravel kamu. Kamu akan melihat folder public & storage yang terpisah.

ls

Langkah 4: Masuk ke folder public dengan command:

cd public

Langkah 5: Buat Symlink antara kedua folder public dan storage dengan command seperti ini:

ln -s /home/namauser/public_html/laravel/storage/app/public storage

untuk ‘nama user’, disesuaikan dengan nama user kamu ya. Untuk lebih memudahkan lihat path urlnya kamu bisa mengetikan command ini terlebih dahulu.

pwd

Maka akan muncul path lengkap url kamu, tinggal terapkan saja command pada Langkah 5.

Jika 5 step tersebut sudah dilakukan, maka folder storage di public akan muncul dan yang artinya berhasil, kalo kita reload web kita, maka gambar seharusnya sudah bisa muncul ya.

Insight lainnya:

Jika teman-teman mengalami masalah icons yang tidak bisa ditampilkan, meskipun semua url link css atau icon sudah sesuai dan bisa di akses. Kemungkinan ada masalah dengan file permissionnya.

Jadi, teman-teman dapat mengubah isi dari file .htaccess yang ada di root folder menjadi seperti ini:

Options -Indexes

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
    RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

Sekian pengetahuan yang bisa disampaikan, semoga berguna buat teman-teman. Jika ada yang mengalamai kendala, silahkan sampaikan lewat comment, admin akan membalas segera mungkin.

Leave a Reply

Your email address will not be published. Required fields are marked *

× Mau Merchandise? bisa, Chat WA yak