Php Session Sorunu

Php session sorunu ister deneyimli bir web geliştirici ister yeni bir web geliştirici olun zaman zaman hepimizin karşısına çıkabilmekte ve bazen bizi patlamaya hazır bir bombaya dönüştürebilmekte. Bu sayfaya sinirli bir şekilde geldiğinizi varsayıyorum. Derin bir nefes alın ve arkanıza yaslanın.

Daha önce kusursuz çalışan bir web sitesini başka bir sunucuya taşıdıktan sonra sessionlarda sorun yaşıyorsanız veya daha önce çalışan bir websitesinden birden session sorunu almaya başladıysanız aşağıdaki maddeleri gözden geçirin. Muhtemelen sizde bir sorun yok ve yapılandırma ile ilgili bir sorun vardır. Bu konuda size yürekten inanıyorum 🙂

1- Uygulamanızı yeni bir sunucuya taşıdıysanız ve taşıma ile ilgili işlemler kurulumlar vs hala devam ediyorsa biraz sabırlı olun. En geç 24 saat sonra muhtemelen sorun düzelecektir.

2- /tmp klasörünün chmod izinlerini kontrol edin. tmp klasörü session bilgilerinin yazıldığı klasördür ve bazen bu klasör yazılabilir olmayabilir. Bu klasörün chmod ayarını 777 veya 755 olarak değiştirin. Yapılandırma dosyanızdan “session.save_path” değerinin /tmp olduğundan da emin olmalısınız.

3- ob_start kullanın. “session_start” fonksiyonunda önce “ob_start” fonksiyonunu kullanın. Eğer “ob_start” fonksiyonunu zaten kullanıyorsanız “session_start” fonksiyonunun bir üstüne bu satırı taşıyın.

4- Apache modüllerini kontrol edin. htaccess içinde kullandığınız bir modül artık kullanılmıyor olabilir yada sunucu üzerinde aktif değildir. htaccess dosyasında oluşacak böyle bir sorun her şey tamamen doğru olsa bile session oluşturmada anlaşılması zor bir sorun çıkaracaktır. Mod_deflate, gzip gibi modüller bazen bu duruma yol açabilir. htaccess dosyasını geçersiz kılıp tekrar session oluşturmayı deneyin. Eğer htaccessi geçersiz kıldığınızda session oluşuyorsa muhtemelen böyle bir sorun yaşıyorsunuz demektir. htaccess dosyasında sorun olduğuna emin olursanız burada yer alan modülleri aktif edin desteklenmeyen modülleri kaldırın.

5- Kısa kullanımları gözden geçirin. Daha önce birçok yazımda söylediğim gibi kapatma etiketi olan ?> bu kombinasyonu kullanmayın kullandırtmayın. Kapatma etiketi kullandığınızda bu satırdan sonra kalan boşluk vs gibi şeyler session oluşturmayı maalesef engelliyor.

6- Kısa kullanımları aktif etme. Birçok sunucu kısa kullanımları destekler ancak yinede siz bir gözden geçirin. Kısa kullanımlar aktif olmadığı zaman herhangi bir hata vermeyebilir ancak yine de bazen session oluşturma sorununa sebep olabilir.

7- UTF-8 karakter kodlamasını uygulayın. Böyle bir sorun yaşamanız bu devirde biraz zor ancak yeni başlayan arkadaşlar için kullandığınız editörde karakter kodlamasının “utf-8 bomsuz” olduğundan emin olun.

8- Tekrar eden session_start fonksiyonları. Kodunuz içinde başka bir yerde session_start oluşturulmadığından emin olun. Böyle bir durumda muhtemelen php derleyiciniz hata verecektir ancak yinede bir göz atmakta fayda var.

9- session_start ve ob_start fonksiyonlarını sayfanın en üstüne taa üstüne taşıyın. Hala session oluşturmada sorun yaşıyorsanız ob_start() ve session_start() satırlarını sayfanızın en üstüne taşıyın.

10- Session zaman aşımı sürelerini kontrol edin. Yapılandırma dosyanızda yer alan “session.gc_maxlifetime” parametresinin değerini kontrol edin. Varsayılan olarak 1140 değeri olmalıdır. Bu parametre hiçbir işlem yapılmaması durumunda oturumun varsayılan olarak ne kadar süre sonra sona ereceğini belirtir.

Yukarıdaki maddelerde yapılandırma ile ilgili maddeleri uyguladıktan sonra sunucu tekrar başlatılmalıdır. Herşeyi denediğiniz halde hala bir sorun yaşıyorsanız kodlarınıza tekrar bir göz atmalısınız. Session oluşturma sorunu ile ilgili eklemek istediğiniz madde veya herhangi birşey varsa yorum olarak göndermeniz beni çok mutlu edecektir.

İyi çalışmalar sevgilerle…