Categoría: Sin categorizar

  • cPanel & CloudLinux: How to Fix PHP Error «SessionHandler::write(): open() failed: No such file or directory»

    cPanel & CloudLinux: How to Fix PHP Error «SessionHandler::write(): open() failed: No such file or directory»

    If you are a system administrator and have encountered the following error in your PHP logs:

    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

    You are not alone. This error occurs when PHP cannot write to the specified path for saving sessions, usually caused by using the PHP Selector from CloudLinux.

    Here, we explain how to fix this issue in a cPanel environment with CloudLinux 8, cPanel, and CageFS.

    Step 1: Verify the existence of directories

    First, make sure that the directories mentioned in the error exist. In this case, the directory is /var/cpanel/php/sessions/alt-php74. To create them, use the following commands (I include all versions from PHP 4.4 to 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

    Step 2: Edit the cagefs.mp file

    Add the following lines to the end of your /etc/cagefs/cagefs.mp file so that CageFS includes these directories in its environment:

    @/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

     

    Step 3: Update and remount CageFS

    After editing cagefs.mp, you need to rebuild and update CageFS for the changes to take effect:

    cagefsctl --force-update
    cagefsctl --update
    cagefsctl --remount-all

    Step 4: Verify the changes

    To make sure the changes have been applied correctly, you can enter the CageFS environment of a specific user and verify that the directories are present:

    cagefsctl --enter <username>
    ls /var/cpanel/php/sessions/

    Replace with the username to verify that the new directories are present.

    Conclusion

    By following these steps, you should have resolved the PHP session writing issue within a cPanel environment with CloudLinux 8 and CageFS. Ensure that the session directories exist and are correctly configured in cagefs.mp, and always rebuild and update CageFS after making configuration changes.

    SEO Keywords (ignore this)

    • SessionHandler::write() failed: No such file or directory
    • PHP session_write_close() error
    • cPanel PHP sessions directory missing
    • CloudLinux 8 CageFS session handling
    • How to fix PHP session errors in cPanel
    • Session directories in CageFS
    • Symfony PHP session issues
    • PHP Selector CloudLinux
    • PrestaShop PHP Issues
    • Prestashop 500 error
    • Prestashop PHP Session

    We hope this guide has been helpful in resolving the issue and that other system administrators can easily find this solution. Good luck!

  • ¿Cómo solicitar el Kit Digital?

    Cómo solicitar las ayudas de KIT DIGITAL
    Para la solicitud del Kit digital debes acceder a dos plataformas distintas:
    1. Acelerapyme, en donde realizarás un test de autodiagnóstico
    2. red.es en donde solicitarás que te concedan el KIT. En esta solicitud se comprueba que tengas realizado el Autodiagnóstico de Madurez Digital. Si no lo tiene hecho no te dejará continuar con la solicitud.

    El registro en Acelerapyme y red.es debe ser con el mismo CIF/NIF para que todo case bien a la hora de hacer las comprobaciones de autodiagnóstico.

    Realizar el Autodiagnóstico de Madurez Digital
    https://www.acelerapyme.gob.es/quieres-conocer-el-grado-de-digitalizacion-de-tu-pyme
    Debes acceder a esa página y registrarte.
    Una vez te hayas registrado, debes completar las 2 partes de las que se compone el test. Cuando acabes la primera parte del test debes completar la segunda parte del test para que al solicitar el Kit Digital en red.es no te de error.
    En cuanto tengas las 2 partes completadas, puedes ir a red.es a solicitar el KIT

    Solicitar el Kit Digital
    El kit se solicita desde red.es
    Tienes que saber a qué convocatoria te debes presentar, es fácil, por el número de empleados (que tienes que demostrar) que tenga la empresa. No intentes “colar” más empleados para acceder a una convocatoria con mayor dotación económica, lo van a comprobar si o si y te van a denegar la ayuda, con lo que tendrás que volver a solicitar la ayuda y habrás perdido más de 2 meses.
    Es muy sencillo y solo te pedirán datos de tu empresa y del solicitante.
    Dependiendo del tipo de solicitante, hay un momento en el que te piden que informes de las ayudas minimis que ha recibido la empresa. Si ese es tu caso: https://www.pap.hacienda.gob.es/bdnstrans/GE/es/concesiones/minimis
    image.png
    image.png
    En este apartado mete el NIF de la empresa y te aparecerán los nombres de empresas que corresponden con ese NIF. Te pueden salir varios, selecciona uno de ellos.
    Cuando ya tengas una empresa seleccionada debes darle a “Buscar” que está al lado derecho de la pantalla.
    image.png

    Completa todas las preguntas hasta que te permita enviar la solicitud.

  • Solucionar el problema kernel al actualizar CloudLinux

    Solucionar el problema kernel al actualizar CloudLinux

    Escribo este post a modo de auto-documentación.

    Al actualizar CloudLinux me dejaron de funcionar varias cosas en CPanel, entre ellas las webs, debido a que no estaba cargando alguno de los módulos PHP.

    Como estoy usando el PHP de CloudLinux al intentar entrar me aparecía el siguiente error:

    Reboot your system to update the kernel.

    Pero ya había actualizado varias veces a si que me puse a indagar porqué no estaba funcionando bien.

    Lo primero que te decían en la documentación oficial era que ejecutaras el comando

    modprobe kmodlve

    Y aparecía un error similar a este (no pude copiarlo exacto)

    Module kmodlve not found in /lib/modules/4.18.0-425.19.2.lve.el8.x86_64+debug

    Ahí me di cuenta que en el kernel aparecía la palabra debug

    Tampoco aparecía nada si ejecutabas el siguiente comando:

    lsmod | grep lve

    Bueno pues resumiendo el problema era que al actualizar el kernel, CloudLinux nos había habilitado un kernel de debug, que no trae todos los módulos ya que suelen traer sólo los esenciales para poder solucionar errores, con lo cual no estaban cargando el módulo kmodlve ni muchos módulos que luego se necesitaban en CPanel.

    Al listar los kernels disponibles en GRUB usando el comando:

    awk -F\' '$1=="menuentry " {print i++ " = "$2}' /etc/grub2.cfg

    Sólo aparecía lo siguiente:

    0 =  System setup

    En principio la solución era eliminar el kernel de debug y dejar los normales, pero al intentar borrarlo nos aparecía el siguiente mensaje:

    # El comando $(uname -r) muestra la versión del kernel actual, cámbiala si necesitas eliminar otra versión
    yum remove kernel-debug-core-$(uname -r)
    
    The operation would result in removing the following protected packages: kernel-debug-core

    Ya que como era el kernel donde habíamos booteado no nos dejaba borrarlo, la solución fue:

    1. Conectarnos al servidor a través de VNC remoto para poder ver la pantalla mientras reiniciaba
    2. Iniciar el sistema con un kernel norma
    3. Ejecutar el comando anterior para borrar el kernel debug y que se elimine del GRUB
    4. Volver a reiniciar para quedar todo solucionado y ver que el servidor arranca por defecto con el kernel normal

     

    Espero que esto te ayude si alguna vez te encuentras en esta situación y te dejo algunos enlaces que te pueden ser útiles:

     

     

  • Migrar una cuenta de correo desde GMail o Google Workspace a IMAP en un servidor usando IMAPSync

    Migrar una cuenta de correo desde GMail o Google Workspace a IMAP en un servidor usando IMAPSync

    No se si conoces el programa llamado IMAPSync este programa te permite migrar cuentas de correo entre servidores y es muy útil cuando quieres llevarte toda la información de un servidor a otro sin perder ningún correo, es decir, el programa copia todos los correos electrónicos de un servidor a otro, nosotros lo usamos muchísimo con nuestros clientes.

    Migrar correo de un servidor a otro, IMAP a IMAP

    Normalmente seguimos el siguiente procedimiento:

    1. Se crean las cuentas de correo en el nuevo servidor
    2. Se sincronizan todos los correos usando IMAPSync (esto puede durar horas e incluso días dependiendo del tamaño del correo y la velocidad/límites del servidor)
    3. Se cambian los registros DNS (A y MX) para que apunten al nuevo servidor
    4. Se vuelve a ejecutar IMAPSync a las 24h de la propagación para evitar perder ningún correo que hubiera entrado en el servidor antiguo.

    El comando que usamos para migrar de una cuenta de IMAP a otra es el siguiente:

    imapsync --host1 "mail.servidorantiguo.com" -user1 nombre@dominio.com --password1 'contraseña' --ssl1 --host2 "mail.servidornuevo.com" --user2 nombre@dominio.com --password2 'contraseña' --ssl2

    Migrar correo de GMail a IMAP

    Cuando migramos de IMAP a IMAP no suele darnos ningún problema, pero al intentar migrar desde Google o GMail nos podemos encontrar con que no somos capaces de iniciar sesión con un mensaje muy similar al siguiente:

    Err 1/1: Host1 failure: Error login on [imap.gmail.com] with user [usuario@dominio.com] auth [LOGIN]: 2 NO [AUTHENTICATIONFAILED] Invalid credentials (Failure)

    Te explicamos los pasos a seguir para solucionarlo:

    Activar el acceso IMAP a GMail

    Lo primero es ir a nuestra cuenta de GMail (la que queremos migrar) pulsar en Ajustes, seguidamente en Reenvío y correo POP/IMAP y por último Habilitar IMAP, no olvides pulsar el botón de Guardar Cambios cuando lo hayas hecho todo.

    Activar el acceso a aplicaciones no seguras

    Si no habilitamos esta opción, las medidas de seguridad de Google nos impedirán conectarnos a nuestra cuenta de GMail.

    Para hacerlo debemos dirigirnos a Seguridad de nuestra cuenta

    Dentro de las opciones elegir Acceso de aplicaciones menos seguras y activamos esta opción

    ¡Listo! Ya podemos usar IMAPSync para sincronizar nuestra cuenta de correo electrónico.

    imapsync  --host1 imap.gmail.com -user1 usuario@gmail.com --password1 "contraseñea" --ssl1  --gmail1 --host2 "mail.nuevoservidor.com" --user2 usuario@nuevoservidor.com --password2 "contraseña" --ssl2 --useheader Message-ID

     

  • Cómo instalar Oh My ZSH en tu consola y algunos plugins útiles (Actualizado 2021)

    Cómo instalar Oh My ZSH en tu consola y algunos plugins útiles (Actualizado 2021)

    En este post os enseñaremos cómo instalar Oh My ZSH en vuestra consola y empezar a disfrutar de una experiencia única, sobre todo si, como nosotros, la usáis muchas horas al día.

    ¿Qué es Oh My ZSH?

    Oh My ZSH es un superpack de utilidades, plugins y plantillas para el shell ZSH que te permitirá tener un super terminal lleno de útiles añadidos.

    ¿Qué es un terminal o consola?

    Si alguna vez has usado una consola de terminal, te habrás fijado en el aspecto tan aburrido que tienen.

    Terminal Mac

    Esto está bien para un uso esporádico, pero cuando comenzamos a usar nuestra consola día a día empezamos a echar en falta algunas funciones…

    ¿Qué es una Shell?

    Una shell es un conjunto de órdenes y comandos que nos permiten trabajar con nuestra consola.

    ls -l

    dir

    Instalando ZSH

    Antes de poder instalar Oh My ZSH, necesitamos tener instalada la shell ZSH:

    Debian/Ubuntu y derivados

    sudo apt-get install git zsh

    CentOS y derivados

    sudo yum install git zsh

    Mac OS

    brew install git zsh

    Windows

    En Windows debes instalar primero la consola Bash. Después, sigue los pasos de Ubuntu.

    Configurando ZSH como consola por defecto

    chsh -s $(which zsh)

    usermod -s $(which zsh) $(whoami)

    Instalando Oh My ZSH

    Instalar usando curl

    sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

    Instalar usando wget

    sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

    Oh My ZSH Instalación

    Tuneando nuestro Oh My ZSH

    Template/Plantilla/Tema

    Edita el archivo ~/.zshrc y cambia ZSH_THEME:

    # If you come from bash you might have to change your $PATH. # export PATH=$HOME/bin:/usr/local/bin:$PATH # Path to your oh-my-zsh installation. export ZSH=/root/.oh-my-zsh ZSH_THEME="agnoster"

    Plugin Manager Antigen

    Debian/Ubuntu

    apt-get install zsh-antigen

    CentOS

    git clone https://github.com/zsh-users/antigen.git $ZSH_CUSTOM/plugins/antigen

    Mac OS

    brew install antigen

    Añade al archivo ~/.zshrc:

    source ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/antigen/antigen.zsh

    Plugin zsh-syntax-highlighting

    Debian/Ubuntu

    apt-get install zsh-syntax-highlighting

    CentOS

    git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $ZSH_CUSTOM/plugins/zsh-syntax-highlighting

    Mac OS

    brew install zsh-syntax-highlighting

    Incluye el plugin en ~/.zshrc:

    plugins=( git zsh-syntax-highlighting ) source $ZSH/oh-my-zsh.sh

    Plugin zsh-autosuggestions

    Instalación manual

    git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions

    Luego añade en ~/.zshrc después del plugin anterior:

    plugins=( git zsh-syntax-highlighting zsh-autosuggestions )

    Mac OS

    brew install zsh-autosuggestions

    Añade a ~/.zshrc:

    source /usr/local/share/zsh-autosuggestions/zsh-autosuggestions.zsh

    Otros ajustes

    Borrar nombre de usuario

    # Remove user prompt_context() { if [[ "$USER" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]]; then prompt_segment black default "%(!.%{%F{yellow}%}.)$USER" fi }