Niedawno zaktualizowałem do PHP 5.3 i od tego czasu otrzymuję (sporadyczne) komunikaty o błędach, które wskazują, że Apache (lub może być czystszym z plików sesji) nie ma uprawnień do folderu, w którym przechowywane są sesje.
Dzieje się to losowo i nie można go odtworzyć z dokładnymi krokami, co doprowadziło mnie do wniosku, że jest to czystsze sesje.
Czy ktoś ma jakieś doświadczenie z takimi błędami?
Komunikat o błędzie (który jest uruchamiany w session_start()
linii) to:
ps_files_cleanup_dir: opendir (/ var / lib / php5) failed: Odmowa uprawnień.
ls -ltr w katalogu sesji daje:
drwx-wx-wt 2 root root 4096 2010-05-25 12:39 php5
W tym katalogu widzę pliki sesji należące do www-data, czyli mojego Apache, a aplikacja działa dobrze. Co sprawia, że zastanawiam się, pod jakim użytkownikiem działa sesja GC?
Odpowiedzi:
Poprawka: w Twoim
php.ini
zestawiesession.gc_probability
do0
Przyczyna, jak sądzę, znalazłem tutaj http://somethingemporium.com/2007/06/obscure-error-with-php5-on-debian-ubuntu-session-phpini-garbage
Zasadniczo, czyszczenie pamięci jest skonfigurowane do wykonywania zadań cron w niektórych systemach (np. Ubuntu / Debian). Niektóre pliki wykonywalne php ini, takie jak php-cli, również próbują usuwać elementy bezużyteczne, co skutkuje wyświetlanym błędem.
źródło
session.gc_probability
już ustawiony0
.session.gc_probability
wyzwalacze do 1. To zdarzyło się nawet, gdy nie ma żadnych ustawień w pliku php.ini w ogóle ! Używam Suphp na Ubuntu, Apache 2.2. Zastanawiam się, czy to jakiś błąd. W każdym razie dodaniesession.gc_probability = 0
do mojego niestandardowego, specyficznego dla witryny pliku php.ini wydaje się rozwiązać problem.Wydaje się, że jest to typowy błąd na serwerach Ubuntu (używam Lucid LTS). Są tam domyślne uprawnienia katalogu / var / lib / php5
drwx-wx-wt 2 root root 4096 2011-11-04 02:09 php5
więc można go zapisać, ale nie odczytać przez serwer WWW, myślę, że to wyjaśnia błędy.
Ponieważ Ubuntu ma własne czyszczenie śmieci za pomocą cron (
/etc/cron.d/php5
), prawdopodobnie najlepiej jest wyłączyć wyrzucanie śmieci w php, jak zasugerował powyżej Diwant Vaidya.session.gc_probability = 0
W rzeczywistości istnieje powód, dla którego folder sesji nie powinien być czytelny dla świata - jak mówi Podręcznik PHP :
źródło
Rozwiązaniem, którego obecnie używam (które nie jestem pewien, jest właściwe), jest przekazanie prawa własności do folderu sesji użytkownikowi Apache (w moim przypadku dane www).
źródło
Ten problem niepokoi mnie od jakiegoś czasu. Zmieniłem wartość zgodnie z sugestią w php.ini i problem nadal występował. Znalazłem tę samą wartość konfiguracyjną w moim index.php, a także private / Zend / session.php. Warto więc przyjrzeć się nieco głębiej, jeśli problem nadal występuje. Mam nadzieję, że komuś się to przyda.
źródło