2013-08-07 9 views
8

Wiem, że istnieje pół tuzina sposobów na uzyskanie wartości dyrektywy session.save_path (phpinfo(), session_save_path() itd.), Ale gdy wartość jest pustym łańcuchem, jak to jest domyślnie, rzeczywista ścieżka może być dowolną z kilku lokalizacje. Czytałem, że zwykle jest to /tmp, z wyjątkiem sytuacji, gdy jest to /var/lib/php5, ale na OS X Mountain Lion zdecydowanie jest to /private/var/tmp. W systemie Windows to prawdopodobnie C:\Windows\Temp, ale kto wie.Czy istnieje sposób określenia ścieżki * rzeczywistej * zapisu sesji?

Mogę określić lokalizację, ale to naprawdę nie pomoże mi. Próbuję zdiagnozować trudny problem i chciałbym się dowiedzieć, jaka jest obecna lokalizacja na serwerze, do którego nie mam pełnego dostępu. Jeśli istnieje odpowiedni sposób, nie jestem w stanie go znaleźć. Jestem otwarty na sprytne hacki.

+0

Założę, że PHP użyje folderu tymczasowego, gdy 'save_path' będzie puste. Możesz spróbować użyć ['sys_get_temp_dir()'] (http://php.net/manual/en/function.sys-get-temp-dir.php). –

+0

To jest teoria, której nie rozważałam, ale niestety jest nie tak. Kiedy uruchamiam 'php -r 'echo sys_get_temp_dir();' 'z wiersza poleceń (OS X 10.8.4), otrzymuję'/var/folders/_k/... '. – Metaphile

+1

W rzeczywistości twój test jest nieprawidłowy. Foldery tymczasowe mogą się różnić w zależności od użytkownika. Jeśli uruchomię to z linii poleceń w OSX, otrzymam podobną ścieżkę, ale nie ma to znaczenia, ponieważ serwer nie działa pod moim kontem użytkownika. Drukowanie 'sys_get_temp_dir()' ze strony testowej przechodzącej przez Apache daje mi '/ var/tmp', który zawiera plik sesji. –

Odpowiedz

4

Nie sprawdziłem kodu źródłowego PHP, aby to potwierdzić, ale wygląda na to, że gdy session.save_path jest puste, PHP używa wartości sys_get_temp_dir() (zależnej od użytkownika).

Powiązane problemy