Solucionar problema de sesión con PHP en servidor
Solucionar problema de sesión con PHP en servidor. Te sale un mensaje como: The PHP session save path /var/lib/php/session is not writable. Please investigate the session.save_path PHP setting or contact your system administrator. Podría funcionar para WHMCS y otras aplicaciones en Linux.
Introducción
En mi caso, el problema comenzó con WHMCS, all cual no podía entrar a su administración como debiera. Al entrar a la página de administración del WHMCS existe una opción que dice Remember me (Recordarme), la cual si la dejaba SIN seleccionar aún entrando correctamente los datos de usuario y contraseña, el sistema no me dejaba entrar sino que volvía a recargar la misma página. PERO si la DEJABA seleccionada, entonces allí sí me permitía entrar. Además, cuando quise actualizar la versión de WHMCS me pedía que entrara de nuevo la contraseña, la ingresaba bien pero me volvía a mostrar la misma página. Pensé en que pasaría si ingresaba mal la contraseña, y pues en ese caso si me lanzaba el error de que la contraseña era incorrecta, lo cual me hizo reafirmar que antes sí estaba funcionando inadecuadamente lo de la sesión. Investigando por internet encontré que al NO seleccionar la opción de Remember me, la aplicación usaría la sesión de PHP y que al SÍ seleccionarla usaría los cookies del Navegador, y que si entraba solo al seleccionarla, entonces el problema estaría muy probablemente en el manejo de sesión de PHP. Más tarde me di cuenta en la sección de monitoreo de salud de WHMCS que había un aviso que decía como: The PHP session save path /var/lib/php/session is not writable. Please investigate the session.save_path PHP setting or contact your system administrator. Este artículo te podría ayudar a solucionar el problema de sesión PHP con WHMCS u otras aplicaciones en Linux.
Bueno, pues el problema consistía básicamente en que la carpeta de save_path que era: /var/lib/php/session, no era escribible por WHMCS. Yo tenía configurado el sitio con WHMCS como un dominio dentro del usuario admin de VestaCP. Así que, lo que hice fue hacer que admin pudiera escribir en la carpeta /var/lib/php/session. Antes - cuando estaba el error - tenía como dueño root:apache y permisos 770 (completo permiso para el dueño y el grupo), luego lo cambié a root:admin (dejando los mismos permisos 770) y el problema se solucionó. Ya con el usuario admin, a donde pertenecía la aplicación WHMCS, pudiendo escribir en la carpeta, WHMCS también lo podría hacer y solucionado. Ahora bien, voy a explicar resumidamente los comandos a ejecutar para resolver el asunto. En mi caso lo hice teniendo WHMCS perteneciendo a VestaCP pero puedes adaptar la solución para tu problema en particular, teniendo en cuenta que el usuario de los archivos y carpetas web a la que pertenece WHMCS deben poder escribir en la carpeta /var/lib/php/session; en mi caso la carpeta web de WHMCS eran de admin:admin y NO de apache:apache, por lo que tener apache como grupo en la carpeta session no funcionaba sino que tenía que ser específicamente con admin; puede que en tu caso, WHMCS u otra aplicación web que manejes tengas sus archivos con apache:apache o www-data:www-data y lo que requieras es que la carpeta de session tenga como grupo de dueño a apache o www-data u otro usuario en vez de admin; deberás adaptarlo a tu caso particular. En cuanto al dueño de la carpeta puedes dejar que sea root, simplemente cambiar el grupo de dueño (asegurando que tenga todos los permisos para este grupo, el 7). Ahora sí, manos a la obra con nuestro asunto.
Paso 1. Verificar save_path en php.ini
Aquí simplemente abre tu archivo de configuración de php, en nuestro caso /etc/php.ini y verifica el parámetro de session.save_path, en nuestro ejemplo, era:
session.save_path = "/var/lib/php/session"
Bueno, esto confirma el error y la relación entre esa carpeta y el manejo de sesión de php.
Paso 2. Hacer /var/lib/php/session escribible para el usuario de la aplicación WHMCS.
En nuestra solución hicimos:
chown -R root:admin /var/lib/php/session
Y pudimos verificar que esta carpeta tenía permisos 770, lo cual es suficiente y seguro.
ls /var/lib/php/ -ls
drwxrwx--- 2 root admin 401408 Mar 29 17:29 session
Listo. Esto fue todo, luego pudimos entrar SIN tener Remember me chuleado/seleccionado, aparecían archivos de sesión dentro de la carpeta /var/lib/php/session, pudimos entrar la contraseña al actualizar y seguir con éso, ya no aparecía el mensaje de Advertencia/Error en la sección de System Health de WHMCS.
Espero les sea este artículo de mucha utilidad. Ojalá comenten abajo. Felicidades, Dios los bendiga!!!