¿Cuál es la ubicación predeterminada de los archivos de sesión en una instalación de Apache / PHP en Ubuntu 10.10?
¿Cuál es la ubicación predeterminada de los archivos de sesión en una instalación de Apache / PHP en Ubuntu 10.10?
Respuestas:
El valor predeterminado session.save_path
está establecido en ""
que se evaluará en el directorio temporal de su sistema. Vea este comentario en https://bugs.php.net/bug.php?id=26757 indicando:
El nuevo valor predeterminado para save_path en las próximas versiones (sic) será la cadena vacía, lo que hace que se analice el directorio temporal.
Puede usar sys_get_temp_dir
para devolver la ruta del directorio utilizada para archivos temporales
Para encontrar la ruta de guardado de la sesión actual , puede usar
Consulte esta respuesta para averiguar cuál es la ruta temporal cuando esta función devuelve una cadena vacía.
php.ini
archivos, php_info()
le dirá cuál está en uso durante la evaluación actual y locate php.ini
lo ayudará a encontrarlos
Primero verifique el valor de session.save_path
usar ini_get('session.save_path')
o phpinfo()
. Si no está vacío, mostrará dónde se guardan los archivos de sesión. En muchos escenarios, está vacío de forma predeterminada, en cuyo caso siga leyendo:
En máquinas Ubuntu o Debian, si session.save_path
no está configurado, los archivos de sesión se guardan en formato /var/lib/php5
.
En los sistemas RHEL y CentOS, si session.save_path
no está configurado, los archivos de sesión se guardarán en/var/lib/php/session
Creo que si compila PHP desde la fuente, cuando session.save_path
no esté configurado, los archivos de sesión se guardarán en /tmp
(aunque no lo he probado yo mismo).
php.ini
) mis sesiones están por debajo de/var/lib/php5/sessions
php -i | grep session.save_path
para la ruta de guardado de la sesión CLI (y probablemente Apache). Además, un dado php.ini
normalmente mostrará la ruta 'predeterminada', solo se comenta.
/tmp
) como su valor de respaldo / predeterminado. Consulte php.net/manual/en/…
/etc/php/7.0/*/php.ini
-> ;session.save_path = "/var/lib/php/sessions"
- Un comentario no significa que "no configurado" es todo lo que quise decir. Obviamente, se establece en algo que no sea 'en blanco' (/ tmp) .. y NO es una cadena vacía / nula
Si no está seguro del valor predeterminado compilado para session.save_path
, consulte el archivo pertinente php.ini
.
Normalmente, esto mostrará el valor predeterminado comentado.
php.ini
Ubicaciones antiguas / nuevas de Ubuntu / Debian :
php5 antiguo con Apache: /etc/php5/apache2/php.ini
php5 antiguo con NGINX + FPM: /etc/php5/fpm/php.ini
Ubuntu 16+ con Apache: /etc/php/*/apache2/php.ini
*
Ubuntu 16+ con NGINX + FPM - /etc/php/*/fpm/php.ini
*
* /*/
= las versiones actuales de PHP instaladas en el sistema.
Para mostrar la versión de PHP en uso en Apache:
$ a2query -m | grep "php" | grep -Eo "[0-9]+\.[0-9]+"
7.3
Dado que PHP 7.3 es la versión que se ejecuta para este ejemplo, la usaría para php.ini
:
$ grep "session.save_path" /etc/php/7.3/apache2/php.ini
;session.save_path = "/var/lib/php/sessions"
O, combinado de una sola línea:
$ APACHEPHPVER=$(a2query -m | grep "php" | grep -Eo "[0-9]+\.[0-9]+") \ && grep ";session.save_path" /etc/php/${APACHEPHPVER}/apache2/php.ini
Resultado:
;session.save_path = "/var/lib/php/sessions"
O bien, utilice PHP para obtener el valor mediante el entorno "cli" (consulte la NOTA a continuación):
$ php -r 'echo session_save_path() . "\n";'
/var/lib/php/sessions
$
Estos también funcionarán:
php -i | grep session.save_path
php -r 'echo phpinfo();' | grep session.save_path
NOTA:
La versión 'cli' (línea de comandos) de php.ini
normalmente tiene los mismos valores predeterminados que las versiones Apache2 / FPM (al menos en lo que respecta a session.save_path
). También puede usar un comando similar para hacer eco de la configuración actual del módulo PHP del servidor web en una página web y usar wget / curl para obtener la información. Hay muchas publicaciones sobre el phpinfo()
uso en este sentido. Pero, es más rápido simplemente usar la interfaz PHP o grep
para que php.ini
muestre su valor predeterminado correctamente .
EDITAR: Por comentario de @aesede -> Agregado php -i
. Gracias
php -i
en CLI para obtener el equivalente de phpinfo ().
Otra ubicación predeterminada común además /tmp/
es/var/lib/php5/
Tuve el mismo problema para encontrar la ruta correcta para las sesiones en una Mac. Con todo, descubrí que CLI PHP tiene un directorio temporal diferente al del módulo Apache: Apache usó /var/tmp
, mientras que CLI usó algo como /var/folders/kf/hk_dyn7s2z9bh7y_j59cmb3m0000gn/T
. Pero en ambos sentidos, sys_get_temp_dir()
me dio el camino correcto cuando session.save_path
está vacío. Usando PHP 5.5.4.
Nada de lo anterior funcionó para mí al usar el repositorio IUS para CentOS 7 con PHP 7.2:
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
Sin embargo, las sesiones no se guardaron en la /tmp
carpeta, sino en la /var/lib/php/mod_php/session/
carpeta:
ls /var/lib/php/mod_php/session/
> sess_3cebqoq314pcnc2jgqiu840h0k sess_ck5dtaerol28fpctj6nutbn6fn sess_i24lgt2v2l58op5kfmj1k6qb3h sess_nek5q1alop8fkt84gliie91703
> sess_9ff74f4q5ihccnv6com2a8409t sess_dvrt9fmfuolr8bqt9efdpcbj0d sess_igdaksn26hm1s5nfvtjfb53pl7 sess_tgf5b7gkgno8kuvl966l9ce7nn
Creo que está en / tmp /. Sin embargo, verifique su función phpinfo, debería decir session.save_path en algún lugar.
/tmp
. ¿Conoce alguna que lo haga? ¿Es ese el caso si crea PHP desde la fuente? Cuando "session.save_path" está vacío, puede ser complicado averiguar dónde van los archivos (de ahí esta pregunta, sospecho)
La única opción infalible para encontrar el session.save_path
valor actual es siempre verificar phpinfo()
exactamente el entorno en el que desea averiguar el directorio de almacenamiento de la sesión.
Razón: puede haber todo tipo de cosas que cambian session.save_path
, ya sea anulando el php.ini
valor o configurándolo en tiempo de ejecución con ini_set('session.save_path','/path/to/folder');
. Por ejemplo, los paneles de administración de servidores web como ISPConfig, Plesk, etc., a menudo lo adaptan para dar a cada sitio web su propio directorio con archivos de sesión.
Dependiendo del tipo de servidor que esté ejecutando, puede variar. Para ubicar el directorio, busque lo siguiente en su archivo php.ini.
upload_tmp_dir = "c: / wamp / tmp"
El directorio puede ser diferente para usted.
<?php phpinfo() ?>
y busca elsession.save_path
.