2013-09-25 27 views
17

dostaję ten błąd:CakePHP Błąd: Nie można skonfigurować sesję, ustawienie session.auto_start udało

Error: [CakeSessionException] Unable to configure the session, setting session.auto_start failed.

Używam CakePHP 2.2.4.

EDIT

Wydaje się ten facet miał ten sam problem: Cakephp Session error on live site i za pomocą tego

if(!isset($_SESSION)) session_start(); 

wewnątrz beforefilter metody AppController naprawić błąd.

Moje pytanie brzmi: dlaczego tak się stało? Wszystko działało dobrze, a potem nagle pojawił się ten błąd. Dodatkowo zdałem sobie sprawę, że folder app/tmp/sessions jest pusty i skonfigurowałem sesję do obsłużenia przez Cake (w Config/core.php).

+0

miał tego jak dobrze się znikąd. Aktualizacja do najnowszej wersji Cake naprawiła to, wydaje się, że mogły one wykonać pewne prace nad ustawieniem sesji ... –

+0

@ bateman_ap Ok, spróbuję tego –

+0

@ bateman_ap Która wersja? – BadHorsie

Odpowiedz

20

W PHP w wersji 4.5.19 - twórcy zamknięta możliwość ustawienia opcji session.auto_start ze skryptu użytkownika.

CakePHP usunął tę opcję z domyślnej konfiguracji sesji tylko w wersji 2.4.0.

Masz więc 3 główne opcje: uaktualnienie CakePHP, obniżenie PHP lub użycie standardowej sesji php.

+0

Aktualizacja CakePHP rozwiązała mój problem. Milion dzięki za tę odpowiedź :) – trante

+0

Albo jest prosta korekta komentarzy, zobacz moją drugą odpowiedź poniżej ... –

8

Jako Andriy's answer says należy uaktualnić CakePHP lub obniżyć wersję PHP. Jeśli jednak nie chcesz lub nie masz opcji, musisz zmienić konfigurację swojej sesji Cake tak, aby używała standardowych sesji PHP zamiast sesji Cake.

app/config/core.php

Configure::write('Session', array(
    'defaults' => 'cake', // You need to change the value of this to 'php' 
    'timeout' => 120, 
    'cookieTimeout' => 20160, 
    'checkAgent' => false 
)); 
+0

Dzięki. Tak, używam hostingu dzielonego 1 i 1. Muszę je wysłać pocztą, jak przypuszczam. –

24

Odpowiedź Andrija Struka jest prawidłowa. Powiedział: Masz więc 3 główne opcje: ulepszenie CakePHP, obniżenie PHP lub użycie standardowych sesji PHP.

Ale jest 4th opcja, można po prostu wypowiedzieć się jeden wiersz w /lib/Cake/Model/Datasource/CakeSession.php (wokół linii 557):

// 'session.auto_start' => 0, 

który zatrzymuje Ciasto nazywając ini_set() w tej okolicy, i zapobiega błąd krytyczny .

+0

żadnych wad tej metody realizacji? –

+0

Nie znalazłem jeszcze żadnych. Nie wierzę, że kiedykolwiek można było zmienić to ustawienie * w skrypcie *, po prostu od wersji PHP 5.4.19 to teraz nie działa, zamiast cicho nic nie robić. –

+0

Pracowałem dla mnie, ale zastanawiam się, czy ta metoda ma jakiekolwiek ograniczenia, czy sesje są teraz podatne na ataki? – indago

5

W pliku php.ini, spróbuj ustawić session.auto_start do 1.

+0

Nie jest to idealne rozwiązanie, ale zdecydowanie poprawna. –