Php “Notice: A session had already been started” (error) Hatası Çözümü

Php kodlama diline yeni başlıyorsanız veya internetten indirdiğiniz hazır bir scripti çalıştırırken sık sık karşılaşacağınız bu hatanın basit bir çözümü var. “Notice: A session had already been started” hatasının vermesinin nedeni yazılımsal olarak session kurgusunun düzgün bir şekilde kurulmamasıdır. Session başlatmak çok kolaydır. “session_start();” komutuyla istediğiniz yerde ve zamanda session başlatabilirsiniz. Ancak bunun bir kuralı var, aynı isimde aynı sayfada sadece bir adet session başlatılabilir. Sayfaya “include” ettiğiniz yani içeriye aldığınız bir üst classta bir standart session başlamış ise siz çalıştığınız sayfada tekrar session başlatırsanız direkt olarak bu hatayı alırsınız. Bu hatanın çözüm yollarını aşağıda takip edebilirsiniz.

1. Projenizde genel bir text search yapın
Tüm projesinizde “session_start” kelimesini arattırın ve sadece en üst leveldeki kod satırlarının en üstünde olanı bırakın gerisini projenizden silip temizleyin.

2. Alt sayfalardaki session larınıza başka bir isim verin
Alt sayfalarda kullandığınız sessionlarınıza farklı isimler verin, örneğin; session_start(“baskasession”); gibi. Bu sayede hata almayacaksınız, lakin dikkat etmeniz gerene bir nokta var. Farklı isimdeki sessionınız ana session dan tamamen ayrılmıştır. İsimlendirilmiş bir session sadece kendine yazdığınız değişkenlerden sorumludur.

3. Php Notice hatalarını kapatın
En kolay ve geçiştirici çözüm budur. Php.ini dosyanızdan “error_reporting” değerinin kaşısına notice uyarılarını kapatması için aşağıdaki gibi parametre yazın ve apache nizi yeniden başlatın.
error_reporting = E_ALL & ~E_NOTICE

Bu sayede tüm notice hataları ekrandan silinecektir, fakat hataları gizlemiş olursunuz. Her ne kadar php kodunun çalışmasına engel olmasada notice hataları büyük bir önem taşır. Kodunuzun düzgün çalışmamasına yol açabilir.

Eğer sıfırdan kodlama yapıyorsanız ve bu hatalardan kurtulamıyorsanız mutlaka session yönetimini bir framework’e bırakın. Doğrudan veya ek olarak kullanacağınız bir MVC framework sessionlarınızı çok daha sağlıklı bir şekilde yönetmenize yardımcı olacaktır.



Bu yazı 25 kez görüntülendi.


Bir Cevap Yazın