Buenas noches.
Generalmente uso ubuntu para realizar mis trabajos y actualmente tengo la version de php8.2 configurado con apache2.
No obstante, hoy tenia la necesidad de configurar una carpeta dentro de mi servidor local el cual aceptara la parametrización de correr con php7.4.
La necesidad venia porque estaba creando un sistema en laravel 9, y recordé que tenia un proyecto con una funcionalidad con laravel 7 el cual corria en php7.4.
En este sentido, ¿como pude lograrlo?
En el terminal instalé el siguiente repositorio:
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update
Para aquellos que no tienen instalado nada se puede instalar apache2 de la siguiente manera:
sudo apt install apache2
Posteriormente, para aquellos que no tengan instalado las versiones de php 8.2 y php 7.4, se instala de esta manera:
sudo apt install apache2 libapache2-mod-fcgid
# Instalar PHP 8.2 y módulos comunes
sudo apt install php8.2 php8.2-fpm php8.2-cli php8.2-common php8.2-mysql php8.2-gd php8.2-mbstring php8.2-xml php8.2-curl php8.2-zip
# Instalar PHP 7.4 y módulos comunes
sudo apt install php7.4 php7.4-fpm php7.4-cli php7.4-common php7.4-mysql php7.4-gd php7.4-mbstring php7.4-xml php7.4-curl php7.4-zip
Reiniciamos apache2 para que tome los cambios:
sudo systemctl restart apache2
Revisamos si tenemos instalado las dos versiones de php correctamente:
php7.4 -v
php8.2 -v
php -v
y deberias ver un resultado como el siguiente:
jhonatanycris@jhonatanycris-MS-7C09:~$ php8.2 -v
PHP 8.2.14 (cli) (built: Dec 21 2023 20:19:50) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.14, Copyright (c) Zend Technologies
with Zend OPcache v8.2.14, Copyright (c), by Zend Technologies
jhonatanycris@jhonatanycris-MS-7C09:~$ php7.4 -v
PHP 7.4.33 (cli) (built: Sep 2 2023 08:03:46) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.33, Copyright (c), by Zend Technologies
jhonatanycris@jhonatanycris-MS-7C09:~$ php -v
PHP 8.2.14 (cli) (built: Dec 21 2023 20:19:50) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.14, Copyright (c) Zend Technologies
with Zend OPcache v8.2.14, Copyright (c), by Zend Technologies
jhonatanycris@jhonatanycris-MS-7C09:~$
En caso de que te de error, debes activar las versiones de php:
sudo systemctl restart php7.4-fpm.service
sudo systemctl restart php8.2-fpm.service
Luego reinicia apache nuevamente y verifica las versiones de php con los siguientes comandos:
php7.4 -v
php8.2 -v
php -v
y si te muestra los resultados, solo basta hacer la siguiente configuración
sudo nano /etc/apache2/sites-available/000-default.conf
Y poner esta configuración:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
# Configuración para PHP 8.2
<FilesMatch \.php$>
SetHandler "proxy:unix:/var/run/php/php8.2-fpm.sock|fcgi://localhost"
</FilesMatch>
# Aquí puedes añadir otras configuraciones específicas del servidor
# como redirecciones, configuraciones de seguridad, etc.
# Configuración específica para el directorio php7.4
<Directory /var/www/html/php7.4>
<FilesMatch \.php$>
SetHandler "proxy:unix:/var/run/php/php7.4-fpm.sock|fcgi://localhost"
</FilesMatch>
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Reiniciamos apache y listo.
Ahora solo basta con crear un archivo info.php con la siguiente configuración:
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/php7.4/info.php
y probar con la URL:
http://localhost/info.php y aquí te debe salir PHP8.2
http://localhost/php7.4/info.php y aquí te debe salir PHP7.2
Espero que les haya servido.
Saludos y Dios les bendiga.