Tutorial 17 Jul 2026 16 Kali Dibaca

Cara Membuat Storage Link Laravel Tanpa Perintah Artisan

Gugun Nurdiansyah
Penulis
Cara Membuat Storage Link Laravel Tanpa Perintah Artisan

Laravel menyediakan sistem penyimpanan file yang terstruktur melalui folder storage. Folder ini digunakan untuk menyimpan berbagai data seperti file upload, gambar produk, dokumen, cache, log, dan file sementara aplikasi.

Untuk file yang perlu diakses secara publik, Laravel biasanya menyimpannya di dalam folder:

storage/app/public

Namun, folder tersebut tidak dapat langsung diakses melalui browser karena berada di luar folder public aplikasi.

Laravel menggunakan symbolic link atau symlink untuk menghubungkan folder tersebut ke:

public/storage

Biasanya, storage link dibuat menggunakan perintah:

php artisan storage:link

Masalahnya, tidak semua pengguna memiliki akses terminal atau SSH. Beberapa shared hosting juga membatasi fungsi symbolic link sehingga perintah Artisan tidak dapat dijalankan.

Pada tutorial ini, Anda akan mempelajari beberapa cara membuat storage link Laravel tanpa menggunakan perintah Artisan.

Apa Itu Storage Link pada Laravel?

Storage link adalah symbolic link yang menghubungkan dua lokasi folder.

Secara default, Laravel membuat hubungan berikut:

public/storage

mengarah ke:

storage/app/public

Dengan storage link, file yang disimpan melalui disk public dapat diakses menggunakan URL website.

Contohnya, file berada di:

storage/app/public/products/gambar.jpg

Setelah storage link dibuat, file tersebut dapat diakses melalui:

https://domainanda.com/storage/products/gambar.jpg

Tanpa storage link, browser tidak dapat menemukan file tersebut meskipun file sudah tersimpan di server.

Mengapa Storage Link Diperlukan?

Storage link dibutuhkan ketika aplikasi Laravel menangani file seperti:

  • Gambar produk

  • Foto profil

  • Dokumen pelanggan

  • File invoice

  • Lampiran artikel

  • Logo perusahaan

  • Bukti pembayaran

  • Berkas pengguna

  • File hasil upload lainnya

Laravel sengaja memisahkan folder penyimpanan dan folder public untuk menjaga struktur aplikasi tetap aman dan terorganisasi.

Hanya file yang memang ditujukan untuk akses publik yang sebaiknya disimpan di dalam:

storage/app/public

Penyebab Perintah Storage Link Tidak Bisa Digunakan

Beberapa kondisi yang membuat pengguna tidak dapat menjalankan php artisan storage:link antara lain:

  • Hosting tidak memiliki akses SSH.

  • Terminal cPanel tidak tersedia.

  • Fungsi symlink() dinonaktifkan.

  • Permission folder tidak sesuai.

  • Folder public/storage sudah tersedia.

  • Struktur Laravel berada di luar public_html.

  • Hosting membatasi pembuatan symbolic link.

  • Path project Laravel berbeda dengan document root domain.

Dalam kondisi tersebut, storage link dapat dibuat menggunakan metode alternatif.

Cara 1: Membuat Storage Link Menggunakan File PHP

Metode pertama adalah menggunakan fungsi symlink() melalui file PHP sementara.

Metode ini cocok jika hosting mengizinkan fungsi symbolic link tetapi tidak menyediakan terminal.

Buat file baru di folder public website.

Contohnya:

public_html/create-storage-link.php

Isi file tersebut dengan kode berikut:

<?php

$target = '/home/username/laravel-app/storage/app/public';
$link = '/home/username/public_html/storage';

if (file_exists($link)) {
    exit('Folder atau link storage sudah tersedia.');
}

if (symlink($target, $link)) {
    echo 'Storage link berhasil dibuat.';
} else {
    echo 'Storage link gagal dibuat.';
}

Sesuaikan bagian berikut:

$target = '/home/username/laravel-app/storage/app/public';

dengan lokasi folder storage Laravel Anda.

Kemudian sesuaikan:

$link = '/home/username/public_html/storage';

dengan lokasi folder public website.

Setelah file dibuat, akses melalui browser:

https://domainanda.com/create-storage-link.php

Jika berhasil, akan muncul pesan:

Storage link berhasil dibuat.

Setelah selesai, segera hapus file create-storage-link.php karena file tersebut tidak boleh dibiarkan dapat diakses secara publik.

Contoh Struktur Laravel di cPanel

Misalnya struktur folder hosting Anda seperti berikut:

/home/username/laravel-app
/home/username/public_html

Core Laravel berada di:

/home/username/laravel-app

Sedangkan domain mengarah ke:

/home/username/public_html

Maka konfigurasi file PHP-nya adalah:

<?php

$target = '/home/username/laravel-app/storage/app/public';
$link = '/home/username/public_html/storage';

if (!file_exists($link)) {
    symlink($target, $link);
    echo 'Storage link berhasil dibuat.';
} else {
    echo 'Storage link sudah tersedia.';
}

Pastikan username dan nama folder disesuaikan dengan hosting Anda.

Cara 2: Menggunakan Path Dinamis

Jika tidak mengetahui absolute path server, Anda dapat menggunakan path dinamis.

Buat file di public_html:

<?php

$target = __DIR__.'/../laravel-app/storage/app/public';
$link = __DIR__.'/storage';

if (file_exists($link)) {
    exit('Storage sudah tersedia.');
}

if (symlink($target, $link)) {
    echo 'Storage link berhasil dibuat.';
} else {
    echo 'Storage link gagal dibuat.';
}

Namun, metode ini hanya bekerja jika posisi folder Laravel dan public_html sesuai dengan struktur tersebut.

Untuk menghindari kesalahan, absolute path biasanya lebih aman.

Cara 3: Membuat Symlink Melalui File Manager cPanel

Beberapa penyedia hosting menyediakan fitur symbolic link di File Manager.

Jika tersedia, langkahnya adalah:

  1. Buka cPanel.

  2. Masuk ke File Manager.

  3. Buka folder public_html.

  4. Pilih menu membuat symbolic link.

  5. Masukkan target folder storage Laravel.

  6. Tentukan nama link menjadi storage.

Target yang digunakan:

/home/username/laravel-app/storage/app/public

Lokasi link:

/home/username/public_html/storage

Tidak semua versi cPanel memiliki fitur ini. Jika menu symbolic link tidak tersedia, gunakan file PHP sementara atau hubungi penyedia hosting.

Cara 4: Menggunakan Cron Job Sementara

Jika hosting tidak memiliki terminal tetapi menyediakan Cron Jobs, Anda dapat mencoba menjalankan perintah storage link melalui cron.

Tambahkan perintah seperti berikut:

cd /home/username/laravel-app && /usr/local/bin/php artisan storage:link

Lokasi PHP dapat berbeda di setiap hosting.

Beberapa contoh path PHP:

/usr/local/bin/php
/usr/bin/php
/opt/cpanel/ea-php83/root/usr/bin/php

Setelah cron berhasil dijalankan, segera hapus cron job tersebut.

Metode ini sebenarnya tetap menjalankan Artisan, tetapi tidak melalui terminal langsung. Jika tujuan Anda benar-benar tidak menggunakan Artisan sama sekali, gunakan fungsi symlink().

Cara 5: Menyalin File Storage ke Folder Public

Jika hosting benar-benar tidak mengizinkan symbolic link, salah satu alternatifnya adalah menyalin file dari storage ke folder public.

Contohnya, file disimpan langsung ke:

public/uploads

Kemudian file dapat diakses melalui:

https://domainanda.com/uploads/nama-file.jpg

Namun, metode ini tidak menggunakan struktur storage Laravel secara standar.

Kekurangannya:

  • Pengelolaan file menjadi kurang rapi.

  • File bercampur dengan aset public.

  • Perlu menyesuaikan kode upload.

  • Tidak otomatis mengikuti konfigurasi disk public.

  • Migrasi server menjadi lebih sulit.

Metode ini sebaiknya digunakan hanya jika symbolic link benar-benar tidak tersedia.

Mengatur Konfigurasi Filesystem Laravel

Buka file:

config/filesystems.php

Pastikan disk public menggunakan konfigurasi seperti berikut:

'public' => [
    'driver' => 'local',
    'root' => storage_path('app/public'),
    'url' => env('APP_URL').'/storage',
    'visibility' => 'public',
    'throw' => false,
],

Kemudian periksa file .env.

Pastikan:

APP_URL=https://domainanda.com

Jangan menggunakan URL localhost ketika aplikasi sudah berada di hosting.

Contoh yang salah:

APP_URL=http://127.0.0.1:8000

Contoh yang benar:

APP_URL=https://ovlamedia.com

Setelah mengubah konfigurasi, bersihkan cache Laravel jika memungkinkan.

php artisan optimize:clear

Jika tidak memiliki terminal, Anda dapat menghapus cache konfigurasi secara hati-hati melalui folder:

bootstrap/cache

Jangan menghapus file .gitignore.

Cara Menyimpan File ke Storage Public

Untuk menyimpan file upload, gunakan disk public.

Contoh:

$path = $request->file('image')->store('products', 'public');

File akan disimpan di:

storage/app/public/products

Nilai $path biasanya berupa:

products/nama-file.jpg

Untuk menampilkan gambar, gunakan:

<img src="{{ asset('storage/'.$path) }}" alt="Gambar Produk">

Atau menggunakan helper Storage:

<img src="{{ Storage::url($path) }}" alt="Gambar Produk">

Hasil URL-nya akan menjadi:

https://domainanda.com/storage/products/nama-file.jpg

Cara Mengecek Storage Link Berhasil atau Tidak

Setelah storage link dibuat, periksa folder public website.

Seharusnya terdapat:

public/storage

atau pada cPanel:

public_html/storage

Folder tersebut biasanya ditampilkan dengan ikon khusus sebagai symbolic link.

Kemudian uji dengan membuat file sederhana di:

storage/app/public/test.txt

Isi file tersebut dengan:

Storage Laravel berhasil.

Kemudian akses:

https://domainanda.com/storage/test.txt

Jika isi file muncul, berarti storage link berfungsi.

Error Folder Storage Sudah Ada

Saat membuat link, Anda mungkin mendapatkan pesan bahwa file atau folder sudah tersedia.

Hal ini terjadi karena folder berikut sudah ada:

public/storage

Periksa apakah folder tersebut merupakan symbolic link atau folder biasa.

Jika hanya folder biasa dan tidak berisi data penting, hapus terlebih dahulu.

Kemudian buat ulang symbolic link.

Jangan menghapus folder tanpa memeriksa isinya karena mungkin terdapat file upload yang masih digunakan.

Error Symlink Already Exists

Pesan seperti berikut dapat muncul:

File exists

Artinya lokasi link sudah tersedia.

Periksa menggunakan File Manager atau terminal.

Jika storage link lama mengarah ke lokasi yang salah, hapus link tersebut kemudian buat ulang.

Pada Linux:

rm public/storage

Perintah tersebut hanya menghapus symbolic link, bukan folder target, selama public/storage benar-benar merupakan symlink.

Error Operation Not Permitted

Pesan:

Operation not permitted

biasanya berarti hosting tidak mengizinkan fungsi symbolic link.

Solusi yang dapat dilakukan:

  • Hubungi penyedia hosting.

  • Minta bantuan pihak hosting membuat symlink.

  • Gunakan document root yang langsung mengarah ke folder public.

  • Simpan file upload ke folder public.

  • Pindahkan aplikasi ke VPS.

  • Gunakan object storage seperti Amazon S3 atau layanan sejenis.

Pada shared hosting tertentu, pengguna memang tidak memiliki izin membuat symlink.

Error Function Symlink Has Been Disabled

Jika muncul pesan:

Call to undefined function symlink()

atau:

symlink() has been disabled for security reasons

artinya fungsi PHP symlink() dinonaktifkan oleh server.

Anda tidak dapat mengaktifkannya sendiri jika menggunakan shared hosting.

Hubungi penyedia hosting dan minta mereka membuat symbolic link dengan target:

storage/app/public

menuju:

public/storage

Error 403 Forbidden pada Folder Storage

Jika storage link sudah ada tetapi file menampilkan Error 403, periksa beberapa hal berikut:

  • Permission folder.

  • Permission file.

  • Konfigurasi .htaccess.

  • Kepemilikan file.

  • Aturan keamanan hosting.

  • Path symbolic link.

Permission yang umum digunakan:

Folder:

755

File:

644

Folder Laravel berikut juga harus dapat ditulis:

storage
bootstrap/cache

Pada server tertentu, permission 775 mungkin diperlukan tergantung konfigurasi user dan group.

Error 404 File Tidak Ditemukan

Jika storage link tersedia tetapi file menghasilkan 404, periksa:

  • File benar-benar ada di storage/app/public.

  • Path file pada database sudah benar.

  • URL menggunakan /storage/.

  • Nama file tidak salah.

  • Huruf besar dan kecil sama.

  • APP_URL sudah sesuai.

  • Cache konfigurasi telah dibersihkan.

Server Linux membedakan huruf besar dan kecil.

Contohnya:

Gambar.jpg

berbeda dengan:

gambar.jpg

Storage Link pada Struktur Public HTML Terpisah

Pada cPanel, Laravel sering menggunakan struktur:

/home/username/project-laravel
/home/username/public_html

Dalam kondisi ini, link default Laravel dapat mengarah ke:

/home/username/project-laravel/public/storage

Padahal domain menggunakan:

/home/username/public_html

Karena itu, link harus dibuat langsung di public_html.

Target:

/home/username/project-laravel/storage/app/public

Link:

/home/username/public_html/storage

Inilah penyebab storage link yang dibuat melalui Artisan kadang tidak langsung bekerja pada struktur shared hosting tertentu.

Membuat Script yang Lebih Aman

Gunakan script berikut agar proses pembuatan link memberikan informasi yang lebih jelas:

<?php

$target = '/home/username/laravel-app/storage/app/public';
$link = '/home/username/public_html/storage';

echo '<pre>';

if (!is_dir($target)) {
    exit("Target storage tidak ditemukan:\n{$target}");
}

if (is_link($link)) {
    exit("Symbolic link sudah tersedia:\n{$link}");
}

if (file_exists($link)) {
    exit("Lokasi link sudah digunakan oleh file atau folder:\n{$link}");
}

if (!function_exists('symlink')) {
    exit('Fungsi symlink tidak tersedia pada server.');
}

if (symlink($target, $link)) {
    echo "Storage link berhasil dibuat.\n";
    echo "Target: {$target}\n";
    echo "Link: {$link}\n";
} else {
    echo 'Storage link gagal dibuat.';
}

Setelah berhasil, hapus script dari server.

Keamanan Saat Membuat Storage Link

Beberapa hal penting yang perlu diperhatikan:

  • Jangan menyimpan data sensitif di disk public.

  • Jangan menaruh file .env di dalam storage public.

  • Validasi setiap file upload.

  • Batasi jenis file yang diperbolehkan.

  • Batasi ukuran file upload.

  • Gunakan nama file yang aman.

  • Hindari menjalankan file PHP dari folder upload.

  • Hapus script pembuat symlink setelah digunakan.

File seperti dokumen rahasia, data pribadi, dan berkas internal sebaiknya disimpan pada disk private dan diakses melalui controller dengan autentikasi.

Alternatif Menggunakan Object Storage

Untuk aplikasi dengan kebutuhan penyimpanan yang lebih besar, Anda dapat menggunakan object storage.

Contohnya:

  • Amazon S3

  • Cloudflare R2

  • DigitalOcean Spaces

  • MinIO

  • Wasabi

  • Google Cloud Storage

Dengan object storage, file tidak perlu disimpan langsung di server aplikasi.

Keuntungannya:

  • Penyimpanan lebih mudah ditingkatkan.

  • File dapat didistribusikan melalui CDN.

  • Backup lebih mudah.

  • Beban server aplikasi berkurang.

  • Cocok untuk aplikasi dengan banyak file.

Laravel mendukung berbagai layanan penyimpanan melalui filesystem abstraction.

Checklist Pembuatan Storage Link

Gunakan checklist berikut untuk memastikan konfigurasi sudah benar:

  • Folder storage/app/public tersedia.

  • Folder target dapat dibaca.

  • Folder public/storage belum digunakan.

  • Absolute path sudah benar.

  • Fungsi symlink() tersedia.

  • Permission folder sudah sesuai.

  • APP_URL sudah benar.

  • Disk public sudah dikonfigurasi.

  • URL file menggunakan /storage/.

  • Script pembuat link sudah dihapus.

  • File upload tidak mengandung file berbahaya.

Kapan Sebaiknya Menggunakan Artisan?

Meskipun storage link dapat dibuat tanpa Artisan, perintah berikut tetap menjadi metode standar Laravel:

php artisan storage:link

Gunakan metode Artisan jika:

  • Memiliki akses SSH.

  • Terminal cPanel tersedia.

  • Struktur folder Laravel standar.

  • Hosting mengizinkan symbolic link.

  • Document root mengarah ke folder public.

Metode tanpa Artisan lebih cocok sebagai solusi alternatif ketika akses terminal tidak tersedia atau struktur hosting berbeda.

Mengapa Memilih Ovla Media?

Ovla Media menyediakan layanan pengembangan, deployment, dan perbaikan aplikasi Laravel untuk shared hosting maupun VPS.

Kami dapat membantu menangani berbagai kendala seperti:

  • Storage link tidak berfungsi

  • Gambar upload tidak tampil

  • Error 403 pada storage

  • File upload menghasilkan 404

  • Deploy Laravel ke cPanel

  • Konfigurasi folder public_html

  • Vite Manifest Not Found

  • HTTP Error 500

  • Konfigurasi .env

  • Migrasi hosting

  • Konfigurasi VPS

  • Maintenance aplikasi Laravel

Setiap proses dilakukan dengan memperhatikan keamanan data, struktur aplikasi, performa, serta kemudahan maintenance di masa depan.

Kesimpulan

Storage link Laravel digunakan untuk menghubungkan folder storage/app/public dengan public/storage agar file upload dapat diakses melalui browser.

Jika Anda tidak memiliki akses terminal atau tidak dapat menjalankan php artisan storage:link, symbolic link dapat dibuat menggunakan fungsi PHP symlink(), fitur File Manager, atau bantuan penyedia hosting.

Konfigurasi yang paling penting adalah memastikan target dan lokasi link sudah benar.

Target:

storage/app/public

Link public:

public/storage

Pada struktur cPanel yang memisahkan project Laravel dan public_html, link harus dibuat langsung di dalam folder public yang digunakan domain.

Setelah storage link berhasil dibuat, pastikan file dapat diakses melalui URL /storage/, permission sudah sesuai, dan file PHP sementara segera dihapus demi keamanan.

Jika Anda membutuhkan bantuan untuk membuat storage link, memperbaiki file upload, melakukan deployment Laravel ke cPanel, atau mengelola server aplikasi, Ovla Media siap membantu memberikan solusi yang aman dan profesional.

#storage link laravel #cara membuat storage link laravel #storage link tanpa artisan #symlink laravel #php artisan storage link #laravel cpanel #public storage laravel #gambar laravel tidak tampil #file upload laravel #laravel error 404 #laravel error 403 #deploy laravel cpanel #tutorial laravel #hosting laravel #maintenance laravel #jasa laravel developer #web development #ovla media
Beranda Produk Artikel
Konsultasi
OVLA

Navigasi Utama

Hubungi Kami

Mulai Konsultasi Sekarang