Desarrollo web

Cómo ejecutar Composer con una versión específica de PHP en cPanel

Por defecto, Composer se ejecuta con la versión más reciente de PHP disponible en el servidor. Si tu proyecto requiere una versión específica de PHP — por ejemplo, porque tienes el dominio configurado con PHP 8.1 pero el Composer del sistema usa PHP 8.3 — puedes configurar un alias en el archivo .bashrc de tu usuario de cPanel para que Composer use siempre la versión que necesitas.

Para seguir esta guía necesitas acceso SSH al servidor. Consulta la guía cómo acceder por SSH a tu hosting de Nicalia.

Rutas de PHP disponibles en cPanel (EasyApache)

En los servidores de Nicalia con EasyApache, cada versión de PHP tiene su propio binario en una ruta del tipo /opt/cpanel/ea-phpXX/root/usr/bin/php. Sustituye XX por la versión que necesites:

Versión PHP Ruta del binario
PHP 7.4 /opt/cpanel/ea-php74/root/usr/bin/php
PHP 8.0 /opt/cpanel/ea-php80/root/usr/bin/php
PHP 8.1 /opt/cpanel/ea-php81/root/usr/bin/php
PHP 8.2 /opt/cpanel/ea-php82/root/usr/bin/php
PHP 8.3 /opt/cpanel/ea-php83/root/usr/bin/php

ℹ️ Para comprobar qué versiones están disponibles en tu servidor, ejecuta por SSH: ls /opt/cpanel/ | grep ea-php

Cómo configurar el alias de Composer con una versión PHP específica

Paso 1 — Acceder al archivo .bashrc

Accede al Administrador de archivos de cPanel y navega al directorio raíz de tu cuenta de cPanel (/home/USUARIOCPANEL/). Activa la visualización de archivos ocultos (Ajustes → Mostrar archivos ocultos) y abre el archivo .bashrc para editar.

También puedes editarlo directamente por SSH:

nano /home/USUARIOCPANEL/.bashrc

Paso 2 — Añadir el alias

Añade las siguientes líneas al final del archivo .bashrc, sustituyendo ea-php74 por la versión de PHP que necesites (consulta la tabla anterior):

alias composer="/opt/cpanel/ea-php74/root/usr/bin/php -d allow_url_fopen=1 -d disable_functions=none ~/bin/composer/composer.phar"

Explicación de cada parte del alias:

  • /opt/cpanel/ea-php74/root/usr/bin/php — ruta al binario de PHP 7.4 en EasyApache. Cámbiala por la versión que necesitas.
  • -d allow_url_fopen=1 — activa allow_url_fopen para esta ejecución, necesario para que Composer pueda descargar paquetes desde internet.
  • -d disable_functions=none — desactiva temporalmente la lista de funciones PHP deshabilitadas, que a veces bloquea funciones que Composer necesita.
  • ~/bin/composer/composer.phar — ruta al archivo de Composer instalado en tu cuenta de cPanel.

Paso 3 — Guardar el archivo

Guarda los cambios en el archivo .bashrc.

Paso 4 — Aplicar el alias en la sesión actual

El alias se aplica automáticamente en las próximas sesiones SSH. Para aplicarlo en la sesión actual sin cerrar y volver a abrir la conexión, ejecuta:

source ~/.bashrc

A partir de ahora, al ejecutar composer usará la versión de PHP que hayas configurado en el alias.

Verifica que funciona correctamente:

composer --version

El resultado mostrará la versión de Composer y la versión de PHP que está usando.

Método alternativo: ejecutar Composer directamente con una versión PHP

Si solo necesitas ejecutar Composer con una versión PHP diferente de forma puntual, sin modificar el .bashrc, puedes hacerlo directamente en un solo comando:

/opt/cpanel/ea-php81/root/usr/bin/php -d allow_url_fopen=1 ~/bin/composer/composer.phar install

Sustituye ea-php81 por la versión deseada e install por el subcomando de Composer que necesites (update, require nombre/paquete, etc.).

Errores frecuentes al ejecutar Composer con versión PHP diferente

«No such file or directory» — la ruta al binario PHP no existe

La versión de PHP que intentas usar no está instalada en el servidor con EasyApache. Verifica las versiones disponibles ejecutando ls /opt/cpanel/ | grep ea-php por SSH. Solo puedes usar las versiones que aparecen en esa lista.

«Could not open file composer.phar» — Composer no está instalado en la ruta indicada

El archivo composer.phar no se encuentra en ~/bin/composer/. Verifica dónde está instalado Composer en tu cuenta ejecutando which composer o find ~ -name composer.phar 2>/dev/null. Si Composer no está instalado, instálalo primero siguiendo la guía oficial de instalación de Composer.

El alias no funciona después de añadirlo al .bashrc

El .bashrc solo se ejecuta automáticamente en nuevas sesiones de shell interactivo. Para aplicarlo en la sesión actual sin reconectar, ejecuta source ~/.bashrc. Si el alias sigue sin funcionar, verifica que no hay errores de sintaxis en el archivo .bashrc — una comilla mal cerrada puede impedir que se cargue correctamente.

Composer falla con «Your PHP version does not satisfy that requirement»

El proyecto requiere una versión de PHP diferente a la que estás usando en el alias. Actualiza el alias en .bashrc para usar la versión PHP que el proyecto requiere (verificable en el composer.json del proyecto en la sección require.php).

Preguntas frecuentes

¿Por qué Composer puede usar una versión de PHP diferente a la del dominio?

Composer se ejecuta desde la línea de comandos SSH con el PHP del sistema, que puede ser diferente a la versión configurada para el dominio en cPanel. El PHP del dominio se usa para las peticiones web (Apache/LiteSpeed), mientras que el PHP de línea de comandos es el que usa por defecto Composer. El alias en .bashrc soluciona esta discrepancia.

¿El alias en .bashrc afecta a otros comandos del servidor?

No. Un alias en .bashrc solo afecta al usuario de cPanel para el que lo configuras y solo al comando composer — no cambia la versión de PHP del sistema ni de ninguna otra herramienta.

¿Cómo verificar con qué versión de PHP se está ejecutando Composer?

Ejecuta composer --version — mostrará la versión de Composer y la versión de PHP que está usando. O directamente: composer diagnose, que muestra información detallada del entorno incluyendo la versión de PHP.

¿Qué diferencia hay entre el alias en .bashrc y el método de comando directo?

El alias en .bashrc es persistente — cada vez que ejecutes composer en cualquier sesión SSH usará la versión PHP configurada. El método de comando directo (invocar el binario PHP directamente) es puntual — solo aplica para esa ejecución concreta. Para uso habitual en desarrollo, el alias es más cómodo. Para una única ejecución, el comando directo evita modificar la configuración.

¿Puedo tener varios alias de Composer para diferentes versiones PHP?

Sí. Puedes crear múltiples alias con nombres diferentes en el .bashrc:

alias composer81="/opt/cpanel/ea-php81/root/usr/bin/php -d allow_url_fopen=1 ~/bin/composer/composer.phar"
alias composer82="/opt/cpanel/ea-php82/root/usr/bin/php -d allow_url_fopen=1 ~/bin/composer/composer.phar"

Luego usa composer81 o composer82 según el proyecto que estés trabajando.