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 419 Page Expired Hatası Nasıl Çözülür?
Laravel Rehber

Laravel 419 Page Expired Hatası Nasıl Çözülür?

Laravel ile geliştirilen web uygulamalarında karşılaşılan 419 Page Expired hatası, özellikle giriş formları, admin panelleri, iletişim formları ve AJAX isteklerinde sık görülebilir. Ekranda genellikle şu mesajlardan biri görünür:

12 dk okuma · · Güncellendi: · 8 okundu
İçindekiler

Laravel 419 Page Expired Hatası Nasıl Çözülür?

Laravel ile geliştirilen web uygulamalarında karşılaşılan 419 Page Expired hatası, özellikle giriş formları, admin panelleri, iletişim formları ve AJAX isteklerinde sık görülebilir.

Ekranda genellikle şu mesajlardan biri görünür:

 
419 Page Expired
 

veya:

 
Page Expired
 

Bu hata çoğunlukla CSRF token doğrulaması, session, cookie veya oturum yapılandırması ile ilişkilidir. Laravel'in web middleware grubu session ve CSRF korumasını sağlar.

Bu rehberde Laravel 419 hatasının nedenlerini ve localhost, cPanel ve production sunucularında uygulanabilecek çözüm yöntemlerini adım adım inceleyeceğiz.


Laravel 419 Page Expired Hatası Nedir?

Laravel 419 hatası, uygulamanın gönderilen HTTP isteğini beklenen şekilde doğrulayamaması durumunda karşınıza çıkabilir.

Özellikle POST, PUT, PATCH ve DELETE gibi isteklerde Laravel'in CSRF koruması devreye girer.

Örneğin basit bir Laravel formu:

 
<form method="POST" action="/profile">
    @csrf

    <input type="text" name="name">

    <button type="submit">Kaydet</button>
</form>
 

şeklinde olabilir.

Buradaki:

 
@csrf
 

ifadesi önemlidir.

Laravel'in CSRF koruması, form isteğinin uygulama tarafından oluşturulduğunu doğrulamaya yardımcı olur.


Laravel 419 Hatası Neden Olur?

419 hatasının birçok farklı sebebi olabilir.

En yaygın nedenler:

  1. Form içerisinde @csrf bulunmaması
  2. CSRF token'ın geçersiz olması
  3. Session'ın çalışmaması
  4. Session cookie'sinin oluşturulamaması
  5. .env yapılandırmasının yanlış olması
  6. APP_URL yapılandırmasının hatalı olması
  7. HTTPS ve HTTP karışıklığı
  8. Cookie domain problemleri
  9. Session driver yapılandırması
  10. Eski configuration cache
  11. AJAX isteğinde CSRF token gönderilmemesi
  12. SPA uygulamalarında XSRF yapılandırmasının eksik olması

Şimdi bunları tek tek çözelim.


1. Formda @csrf Kullanıldığından Emin Olun

Laravel'de POST formu oluşturuyorsanız en temel kontrol noktanız @csrf direktifidir.

Yanlış:

 
<form method="POST" action="/login">

    <input type="email" name="email">
    <input type="password" name="password">

    <button type="submit">Giriş Yap</button>

</form>
 

Doğru:

 
<form method="POST" action="/login">

    @csrf

    <input type="email" name="email">
    <input type="password" name="password">

    <button type="submit">Giriş Yap</button>

</form>
 

@csrf kullanıldığında Laravel form içerisine CSRF token için gizli bir input ekler.

Oluşan HTML kabaca şöyle görünür:

 
<input type="hidden" name="_token" value="...">
 

Bu token Laravel tarafından gelen isteğin doğrulanmasında kullanılır.


2. Laravel CSRF Token Nedir?

CSRF, Cross-Site Request Forgery ifadesinin kısaltmasıdır.

Bu mekanizma, kullanıcının tarayıcısındaki oturum üzerinden kötü niyetli bir sitenin başka bir siteye yetkisiz istek göndermesini engellemeye yardımcı olur.

Laravel'in web middleware grubu CSRF korumasını ve session state'i sağlar.

Bu nedenle özellikle:

 
/login
/register
/profile
/admin
/orders
/settings
 

gibi form gönderimi yapılan alanlarda CSRF token önemlidir.


3. Session Çalışıyor mu Kontrol Edin

419 hatasının önemli nedenlerinden biri session problemleridir.

Laravel session yapılandırması:

 
config/session.php
 

dosyası üzerinden yönetilir.

Session verisinin nerede tutulacağını belirleyen farklı driver seçenekleri vardır. Örneğin file, database, cookie ve Redis gibi seçenekler kullanılabilir.

Örneğin .env içerisinde:

 
SESSION_DRIVER=file
 

kullanıyorsanız Laravel session dosyalarını:

 
storage/framework/sessions
 

altında tutabilir.

Bu durumda ilgili dizinin Laravel tarafından yazılabilir olması gerekir.


4. storage Klasörünün İzinlerini Kontrol Edin

cPanel veya Linux sunucusunda çalışıyorsanız özellikle:

 
storage/
storage/framework/
storage/framework/sessions/
 

dizinlerini kontrol edin.

Terminal üzerinden:

 
ls -ld storage
 

ve:

 
ls -ld storage/framework/sessions
 

komutlarını çalıştırabilirsiniz.

Gerekli durumlarda:

 
chmod -R 775 storage
 

uygulanabilir.

Ancak her sunucuda körü körüne 777 kullanmayın.

Örneğin:

 
chmod -R 777 storage
 

gibi bir çözüm, izin problemini geçici olarak gizleyebilir ancak güvenlik açısından doğru bir production yaklaşımı değildir.

Dosya sahibi ve PHP/web sunucusu kullanıcısının doğru yapılandırılması gerekir.


5. .env Dosyasını Kontrol Edin

Laravel production ortamında .env dosyası çok önemlidir.

Özellikle şu değerleri kontrol edin:

 
APP_NAME="Epik Yazılım"
APP_ENV=production
APP_URL=https://example.com

SESSION_DRIVER=file
 

Uygulamanızın gerçek domaini ile APP_URL arasında tutarsızlık varsa cookie/session davranışında sorun yaşayabilirsiniz.

Örneğin site:

 
https://example.com
 

iken:

 
APP_URL=http://example.com
 

gibi farklı bir yapılandırma kullanılması incelenmesi gereken noktalardan biridir.

Laravel yapılandırmasının önemli bölümlerinin .env üzerinden yönetildiği resmi dokümantasyonda da belirtiliyor.


6. HTTPS ve HTTP Karışıklığını Kontrol Edin

Özellikle SSL kurulumu sonrasında 419 hatası ortaya çıkabilir.

Örneğin siteniz:

 
https://example.com
 

üzerinden çalışıyor ancak bazı yapılandırmalar:

 
http://example.com
 

olarak kalmışsa cookie ve session davranışını kontrol etmek gerekir.

Özellikle:

  • HTTP → HTTPS yönlendirmeleri
  • APP_URL
  • session cookie ayarları
  • proxy yapılandırması
  • Cloudflare
  • SSL/TLS ayarları

birlikte incelenmelidir.


7. Config Cache'i Temizleyin

.env dosyasında değişiklik yaptığınız halde Laravel eski ayarlarla çalışıyorsa configuration cache devrede olabilir.

Laravel projenizin kök dizininde:

 
php artisan config:clear
 

çalıştırabilirsiniz.

Daha kapsamlı temizlik için:

 
php artisan optimize:clear
 

kullanabilirsiniz.

Ardından tarayıcıyı tamamen kapatıp tekrar açarak formu deneyin.


8. Tarayıcı Cookie'lerini Temizleyin

Bazen problem Laravel tarafında değil, tarayıcıda bulunan eski cookie/session bilgilerinde olabilir.

Özellikle şu durumlarda:

  • Domain değiştirildi
  • HTTP → HTTPS geçildi
  • Subdomain değiştirildi
  • Session ayarları değiştirildi
  • APP_KEY değiştirildi

eski cookie'ler sorun oluşturabilir.

Chrome'da ilgili site için cookie ve site verilerini temizleyip tekrar giriş yapmayı deneyebilirsiniz.

Alternatif olarak gizli sekmede test etmek de hızlı bir kontrol yöntemidir.


9. AJAX İsteklerinde CSRF Token Kontrolü

Laravel uygulamanızda JavaScript üzerinden POST isteği gönderiyorsanız sadece Blade formundaki @csrf yeterli olmayabilir.

Örneğin:

 
fetch('/profile', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json'
    },
    body: JSON.stringify({
        name: 'Test'
    })
});
 

şeklinde bir istek gönderiyorsanız CSRF yapılandırmasını da doğru şekilde ele almanız gerekir.

Blade sayfasında token:

 
<meta name="csrf-token" content="{{ csrf_token() }}">
 

şeklinde kullanılabilir.

JavaScript tarafında:

 
const token = document
    .querySelector('meta[name="csrf-token"]')
    .getAttribute('content');
 

ve istek içerisinde:

 
headers: {
    'Content-Type': 'application/json',
    'X-CSRF-TOKEN': token
}
 

kullanılabilir.


10. Axios Kullanıyorsanız XSRF Ayarlarını Kontrol Edin

Laravel'in SPA senaryolarında CSRF/XSRF cookie mekanizması önemlidir.

Laravel Sanctum dokümantasyonunda Axios kullanılıyorsa:

 
axios.defaults.withCredentials = true;
axios.defaults.withXSRFToken = true;
 

ayarlarının kullanılabileceği belirtiliyor.

Özellikle:

 
frontend.example.com
 

ve:

 
api.example.com
 

gibi farklı subdomain'lerde çalışan uygulamalarda cookie domain ayarları ayrıca kontrol edilmelidir.

Laravel dokümantasyonunda subdomain'ler arasında session cookie paylaşımı için session cookie domain yapılandırmasının buna uygun olması gerektiği belirtiliyor.


11. Session Driver Database İse sessions Tablosunu Kontrol Edin

Laravel uygulamanızda:

 
SESSION_DRIVER=database
 

kullanıyorsanız session bilgileri veritabanında tutulur.

Bu durumda sessions tablosunun mevcut olduğundan emin olun.

Eksikse Laravel'in session table migration komutunu kullanabilirsiniz:

 
php artisan make:session-table
 

ardından:

 
php artisan migrate
 

Laravel'in session dokümantasyonunda database session driver kullanıldığında session tablosunun gerekli olduğu belirtilmektedir.


12. Session Cookie Domain Ayarını Kontrol Edin

Özellikle subdomain kullanılan projelerde:

 
www.example.com
admin.example.com
app.example.com
 

gibi alanlar arasında session paylaşımı gerekiyorsa cookie domain yapılandırması önemlidir.

Örneğin:

 
SESSION_DOMAIN=.example.com
 

gibi bir yapı kullanılabilir.

Ancak bunu her projede otomatik olarak eklemeyin.

Tek domain kullanılan bir uygulamada gereksiz cookie domain ayarları yeni problemlere yol açabilir.


13. APP_KEY Değişti mi?

Laravel'in encryption sistemi APP_KEY değerini kullanır.

Bu anahtar cookie'lerin şifrelenmesi dahil çeşitli şifreleme işlemlerinde kullanılır. Laravel dokümantasyonuna göre APP_KEY değiştirildiğinde mevcut kullanıcı session'ları geçersiz hale gelir.

Bu nedenle production sisteminde:

 
php artisan key:generate
 

komutunu rastgele çalıştırmayın.

Mevcut çalışan uygulamanın APP_KEY değerini değiştirmek kullanıcıların oturumlarının sonlanmasına ve eski şifrelenmiş verilerin çözülememesine neden olabilir.


14. Laravel 419 Hatası Login Sayfasında Çıkıyorsa

Örneğin:

 
/login
 

sayfasında kullanıcı formu dolduruyor ve giriş butonuna bastığında:

 
419 Page Expired
 

alıyorsa şu sırayla kontrol edin:

1.

Formda:

 
@csrf
 

var mı?

2.

Session çalışıyor mu?

3.

storage/framework/sessions yazılabilir mi?

4.

.env doğru mu?

5.

APP_URL doğru mu?

6.

HTTPS aktif mi?

7.

Tarayıcı cookie'lerini temizlediniz mi?

8.

Config cache temizlendi mi?

 
php artisan optimize:clear
 

Bu kontroller çoğu klasik 419 probleminin kaynağını daraltır.


15. cPanel'de Laravel 419 Hatası Çözümü

cPanel üzerinde çalışan Laravel uygulamalarında şu kontrol sırası oldukça kullanışlıdır.

Öncelikle Terminal'i açın.

Proje dizinine geçin:

 
cd /home/kullanici/proje
 

Laravel sürümünü kontrol edin:

 
php artisan --version
 

Ardından:

 
php artisan optimize:clear
 

çalıştırın.

Session klasörünü kontrol edin:

 
ls -la storage/framework/sessions
 

İzinleri kontrol edin:

 
ls -ld storage
 

Son olarak .env dosyasındaki:

 
APP_URL=
SESSION_DRIVER=
SESSION_DOMAIN=
 

gibi değerleri inceleyin.


Laravel 419 Hatası İçin Hızlı Kontrol Listesi

Kontrol Durum
Formda @csrf var mı?
Session çalışıyor mu?
storage yazılabilir mi?
APP_URL doğru mu?
HTTPS yapılandırması doğru mu?
Cookie'ler doğru domain'de mi?
.env güncel mi?
Config cache temizlendi mi?
Database session kullanılıyorsa sessions tablosu var mı?
AJAX isteğinde CSRF token gönderiliyor mu?

Laravel 419 ve Laravel 500 Arasındaki Fark

Bu iki hata sık sık karıştırılabilir.

Laravel 500

Genellikle uygulama tarafında beklenmeyen bir exception veya sunucu tarafı problemine işaret eder.

Örneğin:

 
SQLSTATE
Class not found
Permission denied
Call to undefined method
 

gibi hatalar görülebilir.

Laravel 419

Daha çok:

 
CSRF
Session
Cookie
Authentication state
 

gibi request/session doğrulama süreçleriyle ilişkilidir.

Bu nedenle 419 aldığınızda ilk kontrol edilmesi gerekenler formdaki CSRF token ve session/cookie yapılandırmasıdır.


Laravel 419 Hatası Nasıl Önlenir?

Sorunu bir kez çözdükten sonra tekrar yaşamamak için production ortamında şu kontrolleri düzenli yapmak faydalıdır:

  • Formlarda @csrf kullanın.
  • AJAX isteklerinde CSRF mekanizmasını doğru yapılandırın.
  • .env değerlerini production ortamına göre ayarlayın.
  • HTTPS yapılandırmasını düzgün yapın.
  • Session klasörlerinin yazılabilir olduğundan emin olun.
  • Cookie domain ayarlarını gereksiz yere değiştirmeyin.
  • Production ortamında mevcut APP_KEY değerini değiştirmeyin.
  • .env değişikliklerinden sonra gerekli cache temizliğini yapın.
  • Subdomain kullanan uygulamalarda session/cookie yapılandırmasını test edin.

Sonuç

Laravel 419 Page Expired hatası çoğu zaman uygulamanın tamamen bozulduğu anlamına gelmez.

Özellikle şu dört alanı kontrol ederek başlayabilirsiniz:

 
CSRF Token
↓
Session
↓
Cookie
↓
.env / Cache
 

Basit bir Laravel formunda ilk kontrol:

 
@csrf
 

olmalıdır.

Sorun devam ediyorsa:

 
php artisan optimize:clear
 

ile yapılandırma/cache durumunu temizleyebilir, ardından storage/framework/sessions, .env, HTTPS ve cookie ayarlarını kontrol edebilirsiniz.

cPanel üzerinde çalışan Laravel projelerinde ise session izinleri ve domain/HTTPS yapılandırması özellikle önemlidir.

Laravel'in web middleware grubu session state, cookie encryption ve CSRF korumasını birlikte sağladığından, 419 hatasını yalnızca “form hatası” olarak değil, request + session + cookie zinciri olarak değerlendirmek gerekir.

KONUNUZLA İLGİLİ ÖNERİ

Epik Müzayede — Canlı Müzayede Platformu

Antika, sanat eseri ve koleksiyon müzayedeleri için hazır yazılım. Laravel 12 üzerine kurulu, cPanel/paylaşımlı hostingde çalışacak şekilde tasarlandı.

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