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.
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). –
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
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. –