Artículo
SessionHandler::write() failed: session.save_path y alt-php en cPanel/CloudLinux
Publicado el
Si eres un administrador de sistemas y has encontrado el siguiente error en tus logs de PHP:
PHP Warning: SessionHandler::write(): open(/var/cpanel/php/sessions/alt-php74/sess_ecc8f1037c9adc71a4c2a75064937e24, O_RDWR) failed: No such file or directory (2) in /home/user/public_html/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/StrictSessionHandler.php on line 64
PHP Warning: session_write_close(): Failed to write session data using user defined save handler. (session.save_path: /var/cpanel/php/sessions/alt-php74) in /home/user/public_html/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Session/Storage/NativeSessionStorage.php on line 266
No estás solo. Este error ocurre cuando PHP no puede escribir en la ruta que session.save_path indica para guardar las sesiones: un directorio /var/cpanel/php/sessions/alt-phpXX (alt-php56, alt-php74, alt-php81...) que no existe en el servidor. Lo causa casi siempre el PHP Selector de CloudLinux, que configura esa ruta pero no siempre crea el directorio.
A continuación, te explicamos cómo solucionar este problema en un entorno cPanel con CloudLinux 8, CPanel y CageFS.
Paso 1: Verifica la existencia de los directorios
Primero, asegúrate de que los directorios mencionados en el error existen. En este caso, el directorio es /var/cpanel/php/sessions/alt-php74. Para crearlos, usa los siguientes comandos (te adjunto todas las versiones desde PHP 4.4 hasta PHP 8.3:
mkdir -p /var/cpanel/php/sessions/alt-php44
mkdir -p /var/cpanel/php/sessions/alt-php51
mkdir -p /var/cpanel/php/sessions/alt-php52
mkdir -p /var/cpanel/php/sessions/alt-php53
mkdir -p /var/cpanel/php/sessions/alt-php54
mkdir -p /var/cpanel/php/sessions/alt-php55
mkdir -p /var/cpanel/php/sessions/alt-php56
mkdir -p /var/cpanel/php/sessions/alt-php70
mkdir -p /var/cpanel/php/sessions/alt-php71
mkdir -p /var/cpanel/php/sessions/alt-php72
mkdir -p /var/cpanel/php/sessions/alt-php73
mkdir -p /var/cpanel/php/sessions/alt-php74
mkdir -p /var/cpanel/php/sessions/alt-php80
mkdir -p /var/cpanel/php/sessions/alt-php81
mkdir -p /var/cpanel/php/sessions/alt-php82
mkdir -p /var/cpanel/php/sessions/alt-php83
chmod 1777 /var/cpanel/php/sessions/alt-php44
chmod 1777 /var/cpanel/php/sessions/alt-php51
chmod 1777 /var/cpanel/php/sessions/alt-php52
chmod 1777 /var/cpanel/php/sessions/alt-php53
chmod 1777 /var/cpanel/php/sessions/alt-php54
chmod 1777 /var/cpanel/php/sessions/alt-php55
chmod 1777 /var/cpanel/php/sessions/alt-php56
chmod 1777 /var/cpanel/php/sessions/alt-php70
chmod 1777 /var/cpanel/php/sessions/alt-php71
chmod 1777 /var/cpanel/php/sessions/alt-php72
chmod 1777 /var/cpanel/php/sessions/alt-php73
chmod 1777 /var/cpanel/php/sessions/alt-php74
chmod 1777 /var/cpanel/php/sessions/alt-php80
chmod 1777 /var/cpanel/php/sessions/alt-php81
chmod 1777 /var/cpanel/php/sessions/alt-php82
chmod 1777 /var/cpanel/php/sessions/alt-php83
Paso 2: Edita el archivo cagefs.mp
Añade las siguientes líneas al final de tu archivo /etc/cagefs/cagefs.mp para que CageFS incluya estos directorios en su entorno:
@/var/cpanel/php/sessions/alt-php44,700
@/var/cpanel/php/sessions/alt-php51,700
@/var/cpanel/php/sessions/alt-php52,700
@/var/cpanel/php/sessions/alt-php53,700
@/var/cpanel/php/sessions/alt-php54,700
@/var/cpanel/php/sessions/alt-php55,700
@/var/cpanel/php/sessions/alt-php56,700
@/var/cpanel/php/sessions/alt-php70,700
@/var/cpanel/php/sessions/alt-php71,700
@/var/cpanel/php/sessions/alt-php72,700
@/var/cpanel/php/sessions/alt-php73,700
@/var/cpanel/php/sessions/alt-php74,700
@/var/cpanel/php/sessions/alt-php80,700
@/var/cpanel/php/sessions/alt-php81,700
@/var/cpanel/php/sessions/alt-php82,700
@/var/cpanel/php/sessions/alt-php83,700
Paso 3: Actualiza y remonta CageFS
Después de editar cagefs.mp, debes reconstruir y actualizar CageFS para que los cambios se apliquen:
cagefsctl --force-update
cagefsctl --update
cagefsctl --remount-all
Paso 4: Verifica los cambios
Para asegurarte de que los cambios se han aplicado correctamente, puedes entrar en el entorno CageFS de un usuario específico y verificar que los directorios están presentes:
cagefsctl --enter <username>
ls /var/cpanel/php/sessions/
Reemplaza con el nombre de un usuario para verificar que los nuevos directorios están presentes.
Conclusión
Siguiendo estos pasos, deberías haber solucionado el problema de escritura de sesiones en PHP dentro de un entorno cPanel con CloudLinux 8 y CageFS. Asegúrate de que los directorios de sesiones existen y están correctamente configurados en cagefs.mp, y siempre reconstruye y actualiza CageFS después de hacer cambios en la configuración.
Esperamos que esta guía te haya sido útil para resolver el problema y que otros administradores de sistemas puedan encontrar esta solución fácilmente. ¡Buena suerte!
Si administras servidores CloudLinux, quizá te interese también cómo solucionar el problema de kernel al actualizar CloudLinux y cómo migrar cuentas de correo a IMAP con imapsync.