DUYURU
Sizlere daha iyi ve güvenli hizmet sunabilmek amacıyla, Yazılım ve Sistem Kullanım Koşullarımızı güncelliyoruz. Yapılacak güncelleme ile yazılım, sistem kullanımı, bakım, destek ve hizmet süreçlerimiz daha düzenli ve güvenli şekilde yürütülecektir. Sizlere daha iyi ve güvenli hizmet sunabilmek amacıyla, Yazılım ve Sistem Kullanım Koşullarımızı güncelliyoruz. Yapılacak güncelleme ile yazılım, sistem kullanımı, bakım, destek ve hizmet süreçlerimiz daha düzenli ve güvenli şekilde yürütülecektir. Sizlere daha iyi ve güvenli hizmet sunabilmek amacıyla, Yazılım ve Sistem Kullanım Koşullarımızı güncelliyoruz. Yapılacak güncelleme ile yazılım, sistem kullanımı, bakım, destek ve hizmet süreçlerimiz daha düzenli ve güvenli şekilde yürütülecektir. Sizlere daha iyi ve güvenli hizmet sunabilmek amacıyla, Yazılım ve Sistem Kullanım Koşullarımızı güncelliyoruz. Yapılacak güncelleme ile yazılım, sistem kullanımı, bakım, destek ve hizmet süreçlerimiz daha düzenli ve güvenli şekilde yürütülecektir.
Pzt-Cmt 09:00-18:00
Laravel Storage Link Nasıl Oluşturulur?
Laravel Rehber

Laravel Storage Link Nasıl Oluşturulur?

Laravel'de kullanıcıların yüklediği resim, PDF, belge ve diğer dosyaların tarayıcı üzerinden erişilebilir olması için storage:link bağlantısının doğru oluşturulması gerekir.

9 dk okuma · · Güncellendi: · 3 okundu
İçindekiler

Laravel Storage Link Nasıl Oluşturulur?

Laravel'de kullanıcıların yüklediği resim, PDF, belge ve diğer dosyaların tarayıcı üzerinden erişilebilir olması için storage:link bağlantısının doğru oluşturulması gerekir. Özellikle cPanel'e Laravel taşıdıktan sonra resimler görünmüyor, 404 hatası geliyor veya public/storage klasörü bulunamıyorsa sorun çoğu zaman storage bağlantısıyla ilgilidir.

Laravel Storage Yapısı Nasıldır?

Laravel'de dosyalar genellikle şu dizinde tutulur:

storage/app/public

Web üzerinden erişilebilir olması gereken dosyalar için Laravel'in standart yapısı:

storage/app/public
        ↓
public/storage

şeklindedir.

Bu bağlantıyı Laravel'in şu komutu oluşturur:

php artisan storage:link

1. Storage Link Oluşturma

Laravel projenizin ana dizininde:

php artisan storage:link

çalıştırın.

Başarılı olduğunda Laravel genellikle:

The [public/storage] directory has been linked.

benzeri bir mesaj verir.

Ardından:

public/storage

oluşmalıdır.

2. Dosyalar Nerede Saklanmalı?

Örneğin bir kullanıcı profil fotoğrafı yüklediğinizi düşünelim.

Dosya:

storage/app/public/uploads/profil.jpg

konumuna kaydedilebilir.

Storage link oluşturulduktan sonra tarayıcıdan:

https://site.com/storage/uploads/profil.jpg

şeklinde erişilebilir.

3. Laravel'de Dosya Yükleme

Örneğin:

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

Bu işlem dosyayı:

storage/app/public/uploads/

altına kaydeder.

Blade içerisinde görüntülemek için:

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

kullanabilirsiniz.

4. Storage Link Çalışmıyorsa

Öncelikle:

php artisan storage:link

çalıştırın.

Eğer:

The [public/storage] directory already exists.

gibi bir hata alırsanız mevcut bağlantıyı kontrol edin.

Linux ortamında:

ls -la public/storage

ile kontrol edebilirsiniz.

5. Eski Storage Link'i Silme

Yanlış bir symbolic link oluşturulduysa önce:

rm public/storage

ardından:

php artisan storage:link

çalıştırılabilir.

Dikkat: public/storage gerçekten symbolic link olduğundan emin olmadan silme işlemi yapmayın.

6. cPanel'de Storage Link

cPanel Terminal üzerinden Laravel ana dizinine gidin:

cd /home/kullanici/laravel-projesi

Ardından:

php artisan storage:link

çalıştırın.

Kontrol:

ls -la public/storage

Eğer bağlantı doğruysa public/storage bir symbolic link olarak görünmelidir.

7. Laravel public_html Yapısında Storage

Laravel dosyalarınızı:

/home/kullanici/epiklojistikv1

altında tutup public klasörünü:

/home/kullanici/public_html

olarak kullanıyorsanız standart storage:link davranışını özellikle kontrol etmeniz gerekir.

Çünkü Laravel'in kendi public dizini ile gerçek web root birbirinden ayrılmıştır.

Bu durumda bağlantının gerçekten:

public_html/storage

üzerinden erişilebilir olması gerekir.

8. Resimler Yükleniyor Ama Görünmüyorsa

Öncelikle dosyanın gerçekten oluştuğunu kontrol edin:

storage/app/public/uploads/

Ardından:

public/storage/uploads/

üzerinden erişilebilir olup olmadığını kontrol edin.

Örneğin dosyanız:

storage/app/public/uploads/logo.png

ise URL:

https://site.com/storage/uploads/logo.png

olmalıdır.

9. Laravel Storage Disk Ayarını Kontrol Edin

config/filesystems.php içerisinde public disk yapılandırmasını kontrol edin.

Genellikle:

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

şeklinde bir yapı kullanılır.

.env içerisinde de:

APP_URL=https://site.com

gibi doğru domain bulunmalıdır.

10. Dosya İzinlerini Kontrol Edin

Dosyalar mevcut olmasına rağmen erişilemiyorsa dosya ve klasör izinlerini kontrol edin.

Örneğin:

chmod -R 755 storage
chmod -R 755 public

Ancak sunucunuzun kullanıcı/izin yapısına göre uygun izinleri kullanın. Gereksiz şekilde 777 vermek güvenli bir çözüm değildir.

11. Laravel Cache Temizleme

Dosya sistemi veya .env ayarlarında değişiklik yaptıysanız:

php artisan optimize:clear

çalıştırabilirsiniz.

Ardından:

php artisan storage:link

ile bağlantıyı kontrol edin.

12. storage:link Komutu Bulunamıyorsa

Şu komut:

php artisan storage:link

çalışmıyorsa öncelikle doğru Laravel dizininde olduğunuzu kontrol edin:

pwd

Ardından:

ls

çıktısında:

artisan
app
bootstrap
config
public
storage
vendor

gibi Laravel dosyalarını görmelisiniz.

13. Symbolic Link Nedir?

Symbolic link, bir klasör veya dosyaya başka bir konumdan erişim sağlayan bağlantıdır.

Laravel'de:

public/storage

bağlantısı:

storage/app/public

klasörüne erişim sağlar.

Mantık:

Tarayıcı
   ↓
public/storage
   ↓
storage/app/public

şeklindedir.

14. storage:link Sonrası 404 Alıyorum

Dosya gerçekten mevcutsa şu üç noktayı kontrol edin:

storage/app/public/dosya.jpg
public/storage
/storage/dosya.jpg

Ayrıca URL'nin:

/storage/dosya.jpg

şeklinde olduğundan emin olun.

Dosyayı doğrudan:

/storage/app/public/

üzerinden çağırmaya çalışmayın.

15. Laravel Storage Link Windows'ta

Windows geliştirme ortamında symbolic link davranışı Linux/cPanel'den farklı olabilir.

Laravel komutunu yine:

php artisan storage:link

şeklinde çalıştırabilirsiniz.

Sorun yaşanırsa Windows'un symbolic link izinleri ve kullanılan terminal ortamı kontrol edilmelidir.

16. Storage Link'i Production'a Taşırken

Local bilgisayarda oluşturduğunuz symbolic linki her zaman FTP ile normal klasör gibi taşımaya çalışmayın.

Production sunucuda Laravel ana dizininde:

php artisan storage:link

çalıştırmak daha sağlıklı yöntemdir.

17. Birden Fazla Storage Link

Laravel'in filesystems.php yapılandırması üzerinden ek linkler tanımlanabilir.

Örneğin:

'links' => [
    public_path('storage') => storage_path('app/public'),
],

Laravel'in standart storage bağlantısını tanımlar.

Özel ihtiyaçlarda başka bağlantılar da yapılandırılabilir.

18. Storage Link Güvenlik Açığı Mıdır?

public/storage üzerinden yalnızca web erişimine açılması gereken dosyalar sunulmalıdır.

Özel veya hassas dosyaları:

storage/app/private

gibi web erişimi olmayan alanlarda tutmak daha uygundur.

Örneğin:

storage/app/private/faturalar/

içindeki belgelerin doğrudan public URL ile açılması istenmeyebilir.

19. Laravel'de Storage::url() Kullanımı

Dosya URL'si oluşturmak için:

$url = Storage::disk('public')->url($path);

kullanabilirsiniz.

Örneğin:

$path = $request->file('image')->store('uploads', 'public');
$url = Storage::disk('public')->url($path);

Bu yapı public storage diskini kullanır.

20. En Hızlı Storage Link Çözümü

Laravel ana dizininde:

php artisan optimize:clear
php artisan storage:link

Ardından dosyanın:

storage/app/public/

içerisinde bulunduğunu ve:

public/storage/

üzerinden erişilebilir olduğunu kontrol edin.

Sık Sorulan Sorular — 20 S.S.S.

1. Laravel storage link nedir?
public/storage ile storage/app/public arasında web üzerinden dosya erişimi sağlayan symbolic link'tir.

2. Laravel storage link nasıl oluşturulur?
Laravel ana dizininde php artisan storage:link komutu çalıştırılır.

3. Laravel storage link neden gerekli?
storage/app/public içerisindeki dosyaların web üzerinden /storage/... URL'siyle erişilebilir olması için kullanılır.

4. Laravel'de yüklenen resimler neden görünmüyor?
Storage link oluşturulmamış, dosya yanlış dizine kaydedilmiş veya URL yanlış oluşturulmuş olabilir.

5. php artisan storage:link ne işe yarar?
Laravel'in public dizini ile storage/app/public arasında symbolic link oluşturur.

6. Laravel storage link cPanel'de nasıl oluşturulur?
cPanel Terminal'de Laravel ana dizinine geçip php artisan storage:link çalıştırılır.

7. public/storage klasörü neden oluşmuyor?
Yanlış dizinde komut çalıştırılmış olabilir, Laravel izin problemi yaşanabilir veya mevcut bir dosya/klasör bağlantıyı engelliyor olabilir.

8. Laravel storage link 404 veriyor, ne yapmalıyım?
Dosyanın storage/app/public altında bulunduğunu, public/storage bağlantısını ve /storage/ URL'sini kontrol edin.

9. Laravel dosya yükleme için hangi disk kullanılmalı?
Web üzerinden erişilecek dosyalarda Laravel'in public disk yapısı kullanılabilir.

10. Laravel'de dosya nasıl public storage'a kaydedilir?
Örneğin store('uploads', 'public') kullanılarak dosya public diskine kaydedilebilir.

11. Laravel storage link silinebilir mi?
Symbolic link olduğu doğrulandıktan sonra silinip yeniden oluşturulabilir.

12. Laravel storage klasörüne 777 vermek gerekir mi?
Genellikle hayır. Gereksiz şekilde 777 kullanmak yerine sunucunun doğru sahiplik ve izin yapısı kullanılmalıdır.

13. Laravel storage link Windows'ta çalışır mı?
Çalışabilir ancak Windows symbolic link izinleri ve geliştirme ortamı yapılandırması kontrol edilmelidir.

14. Laravel storage link production'a nasıl aktarılır?
Symbolic linki FTP ile taşımak yerine production sunucuda php artisan storage:link çalıştırmak tercih edilebilir.

15. Laravel public storage URL'si nasıl oluşturulur?
asset('storage/' . $path) veya Storage::disk('public')->url($path) kullanılabilir.

16. Laravel storage link ile private dosyalar açılır mı?
Public dosyalar için kullanılır. Hassas dosyalar doğrudan public storage altında tutulmamalıdır.

17. Laravel storage link sonrası cache temizlenir mi?
Sorun devam ediyorsa php artisan optimize:clear çalıştırılabilir.

18. Laravel storage link neden cPanel'de çalışmıyor?
Yanlış Laravel dizini, izinler, public dizinin ayrıştırılması veya symbolic link desteği sorun oluşturabilir.

19. Laravel'de storage link olmadan dosya gösterilebilir mi?
Dosya başka bir güvenli yöntemle servis edilebilir ancak Laravel'in standart public disk yapısında storage:link kullanılır.

20. Laravel storage link için en önemli komut nedir?
Temel komut:

php artisan storage:link

Sonuç

Laravel'de dosyaların web üzerinden görüntülenmemesinin en yaygın nedenlerinden biri storage bağlantısının bulunmamasıdır.

Temel yapı:

storage/app/public
        ↓
public/storage

ve bağlantıyı oluşturmak için:

php artisan storage:link

kullanılır.

cPanel'de Laravel'in public klasörü public_html dışında veya farklı bir yapıda konumlandırılmışsa bağlantının gerçek web root'a doğru şekilde yönlendirildiğini ayrıca kontrol etmek gerekir.

KONUNUZLA İLGİLİ ÖNERİ

Whois Sorgula

Alan adı sahipliği, yenileme tarihi ve DNS bilgilerini ücretsiz sorgulayın.

Abdulkerim Evren
EPİK Yazılım Editör Ekibi

Web tasarım, SEO ve hosting üzerine 7+ yıl deneyimli, kurumsal projelere odaklanan içerik yazarı.

0.0 / 5 · 0 oy
Bu yazı faydalı oldu mu?
Hemen Arayın0552 291 08 91
Bize Yazıninfo@epikyazilim.com
Havale/EFT sonrasıÖdeme Bildirimi Yap
Rehber & CevaplarBilgi Bankası
Instagram WhatsApp