Y desde la línea de comando simplemente haga php -r 'echo session_save_path (), "\ n";'
Richard Ayotte
La ubicación está configurada y no es 'predeterminada' en Ubuntu 10.10. Una compilación limpia de PHP puede proporcionarle esto, pero no bajo ninguna compilación de Debian / Ubuntu que haya usado. La pregunta original se refiere a Ubuntu 10.10. Entonces, solo búsquelo en la línea de comando por último comentario (o mi respuesta) ya que la ubicación puede diferir de 'predeterminada' / en blanco / tmp dependiendo de la distribución de Linux utilizada ..
bshea
4
¡¡Advertencia!! Creo que ejecutar php -r 'echo session_save_path (), "\ n";' como se mencionó anteriormente usará un archivo php.ini diferente (quizás /etc/php/7.0/cli/php.ini en lugar de /etc/php/7.0/apache2/php.ini), y por lo tanto podría tener un valor diferente de " session.save_path "
Magmatic
@Magmatic es correcto, hay DOS php.iniarchivos, php_info()le dirá cuál está en uso durante la evaluación actual y locate php.inilo ayudará a encontrarlos
Jonathan
Tenga en cuenta (según los últimos 2 comentarios): El uso de la versión CLI de PHP (línea de comando) puede producir resultados diferentes según la distribución y la compilación. Lo principal es que NO es la versión de Apache. (Aunque los archivos INI pueden ser idénticos en cuanto a rutas de sesión). Es mejor buscar en / grep Apache PHP.INI adecuado.
bshea
69
Primero verifique el valor de session.save_pathusar 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_pathno está configurado, los archivos de sesión se guardan en formato /var/lib/php5.
En los sistemas RHEL y CentOS, si session.save_pathno 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_pathno esté configurado, los archivos de sesión se guardarán en /tmp(aunque no lo he probado yo mismo).
Estoy usando Ubuntu 12.04.5 LTS y, por alguna razón (no he cambiado nada en php.ini) mis sesiones están por debajo de/var/lib/php5/sessions
Felipe
"No configurado"? Está configurado, pero comentado en php.ini. Esto no significa que no tenga un valor o que no esté "configurado". Desde la línea de comandos simplemente hazlo: php -i | grep session.save_pathpara la ruta de guardado de la sesión CLI (y probablemente Apache). Además, un dado php.ininormalmente mostrará la ruta 'predeterminada', solo se comenta.
bshea
Y sí: si no se compila nada en la ruta predeterminada (no es el caso con la mayoría de las distribuciones), se usará un espacio en blanco (compilar predeterminado). Que luego usaría el área de temperatura del sistema (normalmente /tmp) como su valor de respaldo / predeterminado. Consulte php.net/manual/en/…
bshea
@bshea, por "no establecido", quise decir establecido en la cadena vacía
Rich
DEFAULT Ubuntu 16.04: /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
bshea
16
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.iniUbicaciones 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.
La versión 'cli' (línea de comandos) de php.ininormalmente 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 greppara que php.inimuestre su valor predeterminado correctamente .
EDITAR: Por comentario de @aesede -> Agregado php -i. Gracias
¿Cómo es que / var / lib / php5 / nunca se puede escribir y requiere chmodding / chowning? ¿No debería PHP establecer la ubicación de la sesión en la que se puede escribir de forma predeterminada?
CMCDragonkai
2
Me imagino que es así en los hosts compartidos que otras personas no pueden intentar secuestrar las sesiones de las personas. Es decir, escriba a la sesión diciendo "nombre de usuario: admin" y estableciendo una ID de sesión arbitraria, luego estableciendo PHPSESSID a eso. Sería muy fácil acceder a algo como Drupal o Wordpress en un entorno de host compartido. (Simplemente iniciaría sesión como la cuenta de administrador)
Mattisdada
4
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_pathestá vacío. Usando PHP 5.5.4.
Aunque los documentos de PHP dicen que "/ tmp" es el valor predeterminado, todas las distribuciones de Linux que he probado no colocan los archivos de sesión /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)
Rich
0
La única opción infalible para encontrar el session.save_pathvalor 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.inivalor 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.
<?php phpinfo() ?>
y busca elsession.save_path
.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:Puede usar
sys_get_temp_dir
para devolver la ruta del directorio utilizada para archivos temporalesPara encontrar la ruta de guardado de la sesión actual , puede usar
session_save_path()
- Obtener y / o establecer la ruta de guardado de la sesión actualConsulte esta respuesta para averiguar cuál es la ruta temporal cuando esta función devuelve una cadena vacía.
fuente
php.ini
archivos,php_info()
le dirá cuál está en uso durante la evaluación actual ylocate php.ini
lo ayudará a encontrarlosPrimero verifique el valor de
session.save_path
usarini_get('session.save_path')
ophpinfo()
. 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).fuente
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 dadophp.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 / nulaSi no está seguro del valor predeterminado compilado para
session.save_path
, consulte el archivo pertinentephp.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:
Dado que PHP 7.3 es la versión que se ejecuta para este ejemplo, la usaría para
php.ini
: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 asession.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 elphpinfo()
uso en este sentido. Pero, es más rápido simplemente usar la interfaz PHP ogrep
para quephp.ini
muestre su valor predeterminado correctamente .EDITAR: Por comentario de @aesede -> Agregado
php -i
. Graciasfuente
php -i
en CLI para obtener el equivalente de phpinfo ().Otra ubicación predeterminada común además
/tmp/
es/var/lib/php5/
fuente
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 cuandosession.save_path
está vacío. Usando PHP 5.5.4.fuente
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
fuente
Creo que está en / tmp /. Sin embargo, verifique su función phpinfo, debería decir session.save_path en algún lugar.
fuente
/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 verificarphpinfo()
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 elphp.ini
valor o configurándolo en tiempo de ejecución conini_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.fuente
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.
fuente