Gestión de Versiones de PHP en Raspberry Pi Contexto Cuando tienes múltiples versiones de PHP instaladas en tu Raspberry Pi (especialmente usando el repositorio de Ondrej), necesitas poder cambiar entre ellas según los requisitos de cada proyecto. Verificación inicial Antes de configurar cualquier opción, verifica el estado actual: # Ver versiones de PHP instaladas ls /usr/bin/php* # Ver paquetes PHP instalados apt list --installed | grep php # Verificar versión actual php -v Ejemplo: Instalación de PHP 8.3 (si no está presente) Es un ejemplo, no es para un copy & paste # Actualizar repositorios sudo apt update # Instalar PHP 8.3 y módulos esenciales sudo apt install php8.3 php8.3-cli php8.3-common php8.3-curl php8.3-mbstring php8.3-mysql php8.3-xml # Extensiones adicionales comunes sudo apt install php8.3-gd php8.3-zip php8.3-intl php8.3-bcmath php8.3-sqlite3 Opción 1: Cambio Global con update-alternatives Descripción Cambia la versión predeterminada de PHP para todo el sistema usando el sistema de alternativas de Debian. Configuración # Registrar las versiones disponibles sudo update-alternatives --install /usr/bin/php php /usr/bin/php8.3 83 sudo update-alternatives --install /usr/bin/php php /usr/bin/php8.4 84 # Seleccionar la versión deseada sudo update-alternatives --config php Uso # Cambiar versión interactivamente sudo update-alternatives --config php # Verificar cambio php -v Ventajas Cambio persistente entre sesiones Fácil de cambiar cuando necesites Afecta a todos los scripts y herramientas que usan php Desventajas Cambio global afecta todo el sistema Puede romper scripts que dependen de una versión específica Requiere privilegios administrativos Opción 2: Configuración por Sesión/Proyecto Descripción Configura temporalmente una versión específica de PHP solo para la sesión actual o proyecto específico. Método A: Alias temporal # Crear alias para la sesión actual alias php='/usr/bin/php8.3' # Verificar php -v # El alias se pierde al cerrar la terminal Método B: Script de configuración de proyecto Crea un archivo setup-php.sh en tu directorio de proyecto: #!/bin/bash # setup-php.sh echo "Configurando entorno PHP 8.3 para el proyecto" # Crear aliases temporales alias php='php8.3' alias composer='php8.3 /usr/local/bin/composer' # Verificar configuración echo "Versión PHP activa:" php8.3 -v # Opcional: exportar variables de entorno export PHP_VERSION=8.3 export PHP_BINARY=/usr/bin/php8.3 # Iniciar shell con configuración bash Uso: # Ejecutar el script de configuración source ./setup-php.sh # O hacer ejecutable y ejecutar chmod +x setup-php.sh ./setup-php.sh Método C: Configuración en .bashrc del proyecto # En el directorio del proyecto, crear .bashrc local echo 'alias php="php8.3"' > .bashrc echo 'alias composer="php8.3 /usr/local/bin/composer"' >> .bashrc # Cargar configuración source .bashrc Ventajas No afecta el sistema globalmente Configuración específica por proyecto Fácil de revertir Desventajas Configuración temporal (se pierde al cerrar terminal) Requiere configuración manual para cada proyecto Puede ser inconsistente entre sesiones Opción 3: Uso Directo de Versión Específica Descripción Usa directamente los ejecutables específicos de cada versión sin cambiar configuraciones globales. Uso en scripts # En lugar de usar 'php', usar directamente la versión php8.3 script.php # Para servidor de desarrollo php8.3 -S localhost:8000 # Para composer php8.3 /usr/local/bin/composer install Configuración de shebang en scripts PHP #!/usr/bin/php8.3 ~/bin/php83 << 'EOF' #!/bin/bash exec /usr/bin/php8.3 "$@" EOF # Hacer ejecutable chmod +x ~/bin/php83 # Añadir al PATH (en ~/.bashrc) echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc source ~/.bashrc Uso: # Usar wrapper php83 script.php php83 -S localhost:8000 Ventajas Control total sobre qué versión usar No requiere configuración global Explícito y claro en scripts Desventajas Más verboso Necesitas recordar usar la versión correcta Herramientas como Composer pueden requerir configuración adicional Recomendaciones por Caso de Uso Para desarrollo personal con un proyecto principal Usar Opción 1 (update-alternatives) Cambio fácil y persistente Bueno cuando trabajas principalmente con una versión Para múltiples proyectos con diferentes versiones Usar Opción 2 (configuración por proyecto) Flexibilidad máxima Cada proyecto mantiene su configuración Para scripts de producción o automatización Usar Opción 3 (uso directo) Máxima claridad y control Sin dependencias de configuración del sistema Verificación y Troubleshooting # Verificar versión activa php -v # Verificar módulos instalados php -m # Verificar configuración de PHP php --ini # Ver todas las versiones disponibles ls -la /usr/bin/php* # Verificar composer con versión específica php8.3 /usr/local/bin/composer --version Notas Importantes Módulos y extensiones: Cada versión de PHP tiene sus propios módulos. Asegúrate de instalar las extensiones necesarias para cada versión. Composer: Si usas Composer, puede necesitar configuración específica: # Reinstalar composer para PHP 8.3 php8.3 -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php8.3 composer-setup.php Servidor web: Si usas Apache o Nginx, la configuración del servidor web es independiente de la versión de CLI. Herramientas de desarrollo: IDEs y editores pueden necesitar configuración específica para reconocer la versión correcta. Esta documentación te permitirá elegir la estrategia más adecuada según tus necesidades específicas de desarrollo. 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.