Was ist der Standardspeicherort für Sitzungsdateien bei einer Installation von Apache / PHP unter Ubuntu 10.10?
Was ist der Standardspeicherort für Sitzungsdateien bei einer Installation von Apache / PHP unter Ubuntu 10.10?
Antworten:
Der Standardwert session.save_path
ist festgelegt, ""
der im temporären Verzeichnis Ihres Systems ausgewertet wird. Siehe diesen Kommentar unter https://bugs.php.net/bug.php?id=26757 mit folgenden Angaben:
Der neue Standardwert für save_path in der kommenden Veröffentlichung (sic) ist die leere Zeichenfolge, wodurch das temporäre Verzeichnis überprüft wird.
Sie können sys_get_temp_dir
den Verzeichnispfad zurückgeben, der für temporäre Dateien verwendet wird
Um den aktuellen Sitzungsspeicherpfad zu finden , können Sie verwenden
In dieser Antwort erfahren Sie, wie der temporäre Pfad lautet, wenn diese Funktion eine leere Zeichenfolge zurückgibt.
php.ini
Dateien, die php_info()
Ihnen sagen, welche während der aktuellen Evaluierung verwendet wird, und locate php.ini
Ihnen helfen, sie zu finden
Überprüfen Sie zunächst den Wert session.save_path
mit ini_get('session.save_path')
oder phpinfo()
. Wenn dies nicht leer ist, wird angezeigt, wo die Sitzungsdateien gespeichert sind. In vielen Szenarien ist es standardmäßig leer. In diesem Fall lesen Sie weiter:
Wenn dies auf Ubuntu- oder Debian-Computern session.save_path
nicht festgelegt ist, werden die Sitzungsdateien in gespeichert /var/lib/php5
.
Wenn dies auf RHEL- und CentOS-Systemen session.save_path
nicht festgelegt ist, werden Sitzungsdateien in gespeichert/var/lib/php/session
Ich denke, wenn Sie PHP aus dem Quellcode kompilieren session.save_path
, werden Sitzungsdateien gespeichert , wenn dies nicht festgelegt ist /tmp
(ich habe dies jedoch nicht selbst getestet).
php.ini
) sind meine Sitzungen unter/var/lib/php5/sessions
php -i | grep session.save_path
Für den Speicherpfad für CLI-Sitzungen (und wahrscheinlich für Apache). Außerdem zeigt ein gegebener php.ini
Pfad normalerweise den 'Standard'-Pfad an - er ist nur auskommentiert.
/tmp
) als Fallback / Standardwert verwenden. Bitte beziehen Sie sich auf php.net/manual/en/…
/etc/php/7.0/*/php.ini
-> ;session.save_path = "/var/lib/php/sessions"
- Ein Kommentar bedeutet nicht, dass 'nicht gesetzt' alles ist, was ich meine. Es ist offensichtlich auf etwas anderes als 'leer' (/ tmp) gesetzt .. und ist KEINE leere / null Zeichenfolge
Wenn Sie sich nicht sicher sind, welche Standardeinstellung für kompiliert wurde session.save_path
, sehen Sie sich die entsprechenden Informationen an php.ini
.
Normalerweise wird hier der auskommentierte Standardwert angezeigt.
Ubuntu / Debian alte / neue php.ini
Standorte:
Älteres PHP5 mit Apache: /etc/php5/apache2/php.ini
Älteres PHP5 mit NGINX + FPM: /etc/php5/fpm/php.ini
Ubuntu 16+ mit Apache: /etc/php/*/apache2/php.ini
*
Ubuntu 16+ mit NGINX + FPM - /etc/php/*/fpm/php.ini
*
* /*/
= die aktuell auf dem System installierten PHP-Versionen.
So zeigen Sie die unter Apache verwendete PHP-Version an :
$ a2query -m | grep "php" | grep -Eo "[0-9]+\.[0-9]+"
7.3
Da PHP 7.3 die Version ist, die für dieses Beispiel ausgeführt wird, würden Sie diese für Folgendes verwenden php.ini
:
$ grep "session.save_path" /etc/php/7.3/apache2/php.ini
;session.save_path = "/var/lib/php/sessions"
Oder kombinierter Einzeiler:
$ APACHEPHPVER=$(a2query -m | grep "php" | grep -Eo "[0-9]+\.[0-9]+") \ && grep ";session.save_path" /etc/php/${APACHEPHPVER}/apache2/php.ini
Ergebnis:
;session.save_path = "/var/lib/php/sessions"
Oder verwenden Sie PHP selbst, um den Wert mithilfe der "cli" -Umgebung abzurufen (siehe HINWEIS unten):
$ php -r 'echo session_save_path() . "\n";'
/var/lib/php/sessions
$
Diese funktionieren auch:
php -i | grep session.save_path
php -r 'echo phpinfo();' | grep session.save_path
HINWEIS:
Die 'cli'-Version (Befehlszeilenversion) von hat php.ini
normalerweise die gleichen Standardwerte wie die Apache2 / FPM-Versionen (zumindest bis zur session.save_path
). Sie können auch einen ähnlichen Befehl verwenden, um die aktuellen PHP-Moduleinstellungen des Webservers auf einer Webseite wiederzugeben und die Informationen mit wget / curl abzurufen. Es gibt viele Beiträge zur phpinfo()
Verwendung in dieser Hinsicht. Es ist jedoch schneller, nur die PHP-Schnittstelle zu verwenden oder den Standardwert grep
korrekt php.ini
anzuzeigen.
BEARBEITEN: Per @ aesede Kommentar -> Hinzugefügt php -i
. Vielen Dank
php -i
zu Ihrer Information, Sie können in CLI tun , um phpinfo () Äquivalent zu erhalten.
Ein weiterer gängiger Standardspeicherort /tmp/
ist/var/lib/php5/
Ich hatte die gleichen Probleme, den richtigen Pfad für Sitzungen auf einem Mac zu finden. Alles in allem fand ich heraus, dass die CLI PHP ein anderes temporäres Verzeichnis als das Apache-Modul hat: Apache verwendet /var/tmp
, während CLI so etwas verwendet /var/folders/kf/hk_dyn7s2z9bh7y_j59cmb3m0000gn/T
. Aber in beide Richtungen sys_get_temp_dir()
habe ich den richtigen Weg gefunden, wenn er session.save_path
leer ist. Verwenden von PHP 5.5.4.
Keines der oben genannten Verfahren hat bei mir mit dem IUS-Repo für CentOS 7 mit PHP 7.2 funktioniert:
php -v
> PHP 7.2.30 (cli) (built: Apr 19 2020 00:32:29) ( NTS )
php -r 'echo session_save_path(), "\n";
>
php -r 'echo sys_get_temp_dir(), "\n";'
> /tmp
Sitzungen wurden jedoch nicht im /tmp
Ordner gespeichert , sondern im /var/lib/php/mod_php/session/
Ordner:
ls /var/lib/php/mod_php/session/
> sess_3cebqoq314pcnc2jgqiu840h0k sess_ck5dtaerol28fpctj6nutbn6fn sess_i24lgt2v2l58op5kfmj1k6qb3h sess_nek5q1alop8fkt84gliie91703
> sess_9ff74f4q5ihccnv6com2a8409t sess_dvrt9fmfuolr8bqt9efdpcbj0d sess_igdaksn26hm1s5nfvtjfb53pl7 sess_tgf5b7gkgno8kuvl966l9ce7nn
Ich glaube es ist in / tmp /. Überprüfen Sie Ihre phpinfo-Funktion, dort sollte irgendwo session.save_path stehen.
/tmp
- kennen Sie welche? Ist das der Fall, wenn Sie PHP aus dem Quellcode erstellen? Wenn der "session.save_path" leer ist, kann es schwierig sein herauszufinden, wohin die Dateien gehen (daher diese Frage, vermute ich)
Die einzige todsichere Option, um den aktuellen session.save_path
Wert zu ermitteln, besteht darin, phpinfo()
genau in der Umgebung zu suchen, in der Sie das Sitzungsspeicherverzeichnis ermitteln möchten.
Grund: Es kann alle möglichen Dinge geben, die sich ändern session.save_path
, entweder durch Überschreiben des php.ini
Werts oder durch Festlegen zur Laufzeit mit ini_set('session.save_path','/path/to/folder');
. Beispielsweise passen Webserver-Verwaltungsbereiche wie ISPConfig, Plesk usw. dies häufig an, um jeder Website ein eigenes Verzeichnis mit Sitzungsdateien zuzuweisen.
Je nach Servertyp kann dies variieren. Um das Verzeichnis zu finden, suchen Sie in Ihrer php.ini-Datei nach Folgendem.
upload_tmp_dir = "c: / wamp / tmp"
Das Verzeichnis kann für Sie unterschiedlich sein.
<?php phpinfo() ?>
und suche nach demsession.save_path
.