Skip to main content

Cambiar la versión PHP para el shell (composer)

Introducción

Cuando un sistema linux tiene múltiples versiones de PHP (cPanel, Directadmin, sistema sin panel de control, etc) uno de los problemas habituales es como usar una versión php en la shell diferente de la que está por defecto en el sistema. Bien, puedes especificar una versión por usuario e incluso puedes hacer que el usuario use distintas versiones PHP en el mismo usuario para distintos proyectos y sin Docker, como al trabvajar con Laravel, Symfony y otros.

Archivo de configuración de mi shell

El ejemplo en este caso es para bash, pero poco difiere de otros shell (yo en lo particular uso zsh) ya que todos tienen en común un fichero de configuración que se carga cuando iniciamos sesión o cuando tras modificarlo, ejecutamos un comando para que vuelva a leer ese fichero.

  • .bash_profile
  • .bashrc
  • .kshrc
  • .zshrc
  • .tcshrc

Cambiar la versión PHP de tu usuario de shell en bash

Iniciar sesión con tu usuario. Asegurarnos de que estamos en el inicio de sesión

$ cd ~

Obtener el path de las versiones instaladas

# ls -lisah /usr/local/bin/php
19270949 0 lrwxrwxrwx 1 root root 26 Jun  8 08:39 /usr/local/bin/php -> /usr/local/php56/bin/php56
# ls -lisah /usr/local
ls /usr/local/
...  php71  php73  php80 ... php56   php72  php74

Agregar la línea para usar la versión requerida

# .bashrc o .bash_profile Véase su distribución
# .zshrc
export PATH=/usr/local/php80/bin:$PATH

Cpanel (v98+)

En cpanel las instalaciones de php estan en el directorio /opt/cpanel/ con la nomemclatura ea-phpXX para indicar la version por lo que el path a añadir sería export PATH=/opt/cpanel/ea-php80/root/bin/:$PATH por ejemplo

  • ea-php74
  • ea-php80

Salvar y hacer un reload de tu perfil

# bash
$ . ~/.bash_profile
# zsh
$ source ~/.zshrc

Comprobar la versión PHP de nuestro shell

php -v
PHP 8.0.5 (cli) (built: May  3 2021 11:30:57) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.5, Copyright (c) Zend Technologies
 with Zend OPcache v8.0.5, Copyright (c), by Zend Technologies

Usar alias para distintos proyectos con el mismo usuarios

En mi caso como dije uso zsh y tengo múltiples proyectos. No me gusta marearme con docker salvo para cosas específicas asi que prefiero tener unos alias en mi fichero ~/.zshrc

alias p74='/usr/bin/php7.4 '
alias a74='/usr/bin/php7.4 artisan '
alias c74='/usr/bin/php7.4 /usr/local/bin/composer '

Ejemplo usar versión especifica de PHP en el shell de una cuenta cpanel

Editar el fochero .bashrc del usuario

...
# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=
...
alias php=/opt/cpanel/ea-php80/root/usr/bin/php
alias composer='/opt/cpanel/ea-php80/root/usr/bin/php /opt/cpanel/composer/bin/composer'
Aviso

Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris

Si necesitas soporte profesional puedes contratar con Castris soporte profesional.