Cómo modificar session.save_path en cPanel (PHP)
El valor session.save_path es una directiva de PHP que determina la ubicación en el servidor donde se almacenan los archivos de sesión de un sitio web. Cuando un usuario navega por el sitio, PHP crea un archivo de sesión en esa ruta para almacenar información como su estado de autenticación, preferencias y datos temporales.
El problema más habitual con esta directiva ocurre al cambiar la versión de PHP en cPanel: si la ruta de sesiones configurada en el .htaccess no coincide con la ruta que usa la nueva versión, PHP no puede acceder a los archivos de sesión y se produce un error similar a este:
SessionHandler::read(): open(/var/cpanel/php/sessions/alt-php72/sess_8809a1917cb6e397ce7f59e5ccf64e62, O_RDWR)
La solución es actualizar el valor de session.save_path para que apunte a la ruta correcta según el handler de PHP que estés usando.
Rutas correctas según el handler de PHP
La ruta de sesiones correcta depende del handler de PHP activo en tu cuenta. Sustituye XX por el número de tu versión de PHP (por ejemplo 74 para PHP 7.4, 81 para PHP 8.1):
| Handler | Ruta correcta de session.save_path |
|---|---|
| MultiPHP (ea-php) | /var/cpanel/php/sessions/ea-phpXX |
| CloudLinux (alt-php) | /opt/alt/phpXX/var/lib/php/session |
Ejemplos con PHP 7.4:
- MultiPHP:
/var/cpanel/php/sessions/ea-php74 - CloudLinux:
/opt/alt/php74/var/lib/php/session
Si no sabes qué handler usa tu cuenta, consulta la guía cómo modificar los valores de PHP en cPanel — en la sección «Cómo saber qué handler de PHP estás usando» explica cómo identificarlo desde cPanel.
Modificar session.save_path con handler MultiPHP
Si estás usando el handler MultiPHP (ea-php), la directiva se añade desde el Editor INI de MultiPHP:
- Ve a cPanel → Software → Editor INI MultiPHP.
- Selecciona el dominio afectado.
- Cambia a Modo Editor.
- Añade la siguiente línea, sustituyendo
XXpor tu versión de PHP (por ejemplo74para PHP 7.4):
php_value session.save_path "/var/cpanel/php/sessions/ea-phpXX"
Por ejemplo, para PHP 8.1:
php_value session.save_path "/var/cpanel/php/sessions/ea-php81"
- Haz clic en Guardar.
Modificar session.save_path con handler CloudLinux
Si estás usando el handler CloudLinux (alt-php), la directiva se configura desde el Selector PHP:
- Ve a cPanel → Software → Seleccionar versión de PHP.
- Haz clic en la pestaña Opciones.
- Localiza el parámetro session.save_path.
- Introduce la ruta correcta para tu versión de PHP, sustituyendo
XXpor el número de versión:
/opt/alt/phpXX/var/lib/php/session
Por ejemplo, para PHP 8.1:
/opt/alt/php81/var/lib/php/session
- Guarda los cambios.
ℹ️ También puedes configurar esta directiva directamente en el archivo .htaccess de tu dominio con la siguiente línea:
php_value session.save_path "/opt/alt/phpXX/var/lib/php/session"
Errores frecuentes con session.save_path
El error persiste después de actualizar la ruta
Verifica que el número de versión en la ruta coincide exactamente con la versión de PHP activa en tu cuenta. Si tienes PHP 8.2 activo, la ruta debe contener ea-php82 o alt-php82, no 74 o cualquier otra versión anterior. Comprueba la versión activa desde cPanel → Software → Seleccionar versión de PHP.
No encuentro el parámetro session.save_path en CloudLinux
Si tienes seleccionada la versión native en el Selector PHP de CloudLinux, no podrás modificar los parámetros — debes seleccionar primero una versión específica (alt-php74, alt-php81, etc.). Una vez seleccionada una versión específica, aparecerán todos los parámetros editables en la pestaña Opciones.
El directorio de sesiones no existe o no tiene permisos
Si configuras una ruta personalizada (diferente a las rutas estándar del sistema), ese directorio debe existir y tener los permisos correctos para que PHP pueda escribir en él. Los permisos recomendados son 700 (solo el propietario puede leer y escribir). Si usas las rutas estándar indicadas en esta guía, los permisos ya están configurados correctamente por el sistema.
El error aparece solo después de cambiar la versión de PHP
Es el escenario más habitual. Al cambiar de PHP 7.x a PHP 8.x (o viceversa), la ruta de sesiones cambia pero el valor en el .htaccess sigue apuntando a la ruta de la versión anterior. Actualiza el número de versión en la directiva session.save_path cada vez que cambies la versión de PHP.
Preguntas frecuentes sobre session.save_path
¿Qué es session.save_path en PHP?
Es la directiva PHP que define en qué directorio del servidor se guardan los archivos de sesión. Cada sesión de usuario activa genera un archivo en esa ruta. Por defecto PHP usa una ruta del sistema, pero en entornos de hosting compartido con múltiples versiones de PHP, la ruta correcta varía según la versión activa.
¿Por qué aparece el error SessionHandler::read() al cambiar la versión de PHP?
Porque cada versión de PHP en cPanel (ea-php, alt-php) tiene su propio directorio de sesiones. Al cambiar la versión activa, la ruta configurada en session.save_path deja de ser válida para la nueva versión. La solución es actualizar la ruta para que coincida con la de la nueva versión.
¿Debo actualizar session.save_path cada vez que cambio la versión de PHP?
Sí, si tienes configurado un valor personalizado de session.save_path. Si no tienes esta directiva configurada explícitamente, PHP usará la ruta por defecto del sistema, que puede no ser la correcta para tu versión. En la práctica, lo más habitual es añadir o actualizar la directiva justo después de cambiar la versión de PHP.
¿Puedo usar una ruta personalizada diferente para session.save_path?
Sí. Puedes especificar cualquier directorio que sea accesible para PHP, por ejemplo /home/usuario/tmp/sessions. El directorio debe existir y tener permisos 700. Para crear el directorio puedes usar el Administrador de Archivos de cPanel o SSH con mkdir -m 700 /home/usuario/tmp/sessions.
¿Cómo saber qué versión de PHP está activa en mi cuenta?
Desde cPanel ve a Software → Seleccionar versión de PHP — ahí se muestra la versión activa y el handler. También puedes crear un archivo info.php con <?php phpinfo(); ?> en la raíz de tu dominio y buscar el valor de session.save_path en la salida para ver cuál usa tu configuración actual.
