Symfony2 “SessionHandler::read() Permission Denied” Hatası

CentOS 6.5 x64 bir sunucuda Symfony 2.4 versiyonu ile çalışırken, production ortamında  aşağıdaki hata ile karşılaştım. Çalışma ortamım Nginx ve Php-Fpm ile kuruluydu. Herşey yolundayken bir login işlemi sonucu garip bir session okuma hatası meydana geldi. Gerçekten garip ve ilk başta anlam veremediğim bir hataydı. Araştırmalarıma göre bu hata Php 5.4.11 sürümünden önceki versiyonlarda olan bir problemdi. Fakat Php 5.4.31 kullanmama rağmen bu hatanın çıkması sorunu tamamen Symfony2 ayarlarıyla ilişkilendirmemi sağladı. Görünüşe göre Symfony sessionları sunucuda hangi dizinden okuma yetkisini alacağını bilmiyordu.

Hata tam olarak aşağıdaki gibiydi:

 PHP message: PHP Warning:  SessionHandler::read(): open(/var/lib/php/session/sess_0s8l9414gheld4iir2qrlflub5, O_RDWR) failed: Permission denied 

Bu problemi düzeltmek için app/config.yml dosyasını açın ve framework ayarı altındaki session bilgilerini aşağıdaki gibi güncelleyin.

framework:
    session:
        handler_id: session.handler.native_file
        save_path: "%kernel.root_dir%/sessions"

Ardından php app/console cache:clear –env=prod diyerek cacheleri temizleyin. Artık login işlemi sorunsuz bir şekilde yapılacaktır. Bu ayarı yapmadığınız takdirde Symfony default olarak php.ini dosyanızda boş tanımlanmış olan session.cookie_path değerini almaya çalışır. Doğru bir ayar olmadığı içinde bu şekilde bir hata verir.

  
  • Yorumunuz için teşekkür ederim.