2013-08-07 17 views
8

Ich weiß, es gibt ein halbes Dutzend Möglichkeiten, um den Wert der session.save_path Direktive (phpinfo(), session_save_path(), etc.) zu erhalten, aber wenn der Wert eine leere Zeichenfolge ist, wie es standardmäßig ist, kann der tatsächliche Pfad mehrere sein Standorte. Ich habe gelesen, dass es normalerweise /tmp ist, außer wenn es /var/lib/php5 ist, aber auf OS X Mountain Lion ist es definitiv /private/var/tmp. Unter Windows ist es wahrscheinlich C:\Windows\Temp, aber wer weiß.Gibt es eine Möglichkeit, den * tatsächlichen * Sitzungsspeicherpfad zu bestimmen?

Ich könnte den Standort angeben, aber das wird mir nicht wirklich helfen. Ich versuche, ein heikles Problem zu diagnostizieren, und ich möchte gerne wissen, wo sich der aktuelle Standort auf einem Server befindet, auf den ich keinen vollständigen Zugriff habe. Wenn es einen richtigen Weg gibt, konnte ich es nicht finden. Ich bin offen für clevere Hacks.

+0

Ich würde annehmen, PHP würde den temporären Ordner verwenden, wenn der 'save_path' leer ist. Sie könnten versuchen, ['sys_get_temp_dir()'] (http://php.net/manual/en/function.sys-get- temp-dir.php) zu verwenden. –

+0

Das ist eine Theorie, die ich nicht berücksichtigt hatte, aber leider ist es falsch. Wenn ich 'php -r 'echo sys_get_temp_dir();'' von der Kommandozeile (OS X 10.8.4) starte, bekomme ich '/ var/folders/_k/...'. – Metaphile

+1

Eigentlich ist dein Test falsch. Temporäre Ordner können je nach Benutzer variieren. Wenn ich das über die Befehlszeile in OSX ausführe, bekomme ich einen ähnlichen Pfad, aber das ist irrelevant, weil der Server nicht unter meinem Benutzerkonto läuft. Das Drucken von 'sys_get_temp_dir()' von einer Testseite, die Apache durchläuft, gibt mir '/ var/tmp', was die Sitzungsdatei enthält. –

Antwort

4

Ich habe den PHP-Quellcode nicht überprüft, um dies zu bestätigen, aber es sieht so aus, als wenn session.save_path leer ist, PHP den Wert sys_get_temp_dir() verwendet (der je nach Benutzer variiert).

Verwandte Themen