Tabla de contenidos
Desde el cPanel de nuestro hosting, nos permite utilizar diferentes versiones PHP que necesitemos, pero esta versión PHP se asigna a todo el servidor por completo. Es decir, si vamos a tener varios proyectos web alojados en el mismo servidor, todos los proyectos web deben ser compatibles con la versión PHP que está configurado en el servidor, o de lo contrario, no funcionaran tus proyectos web correctamente.
El problema que nos podemos encontrar en que es posible que quieras mantener una web antigua con la versión PHP 5.x, pero si pones la versión PHP 7.x va a dejar de funcionar. Entonces… ¿Qué es lo que puedes hacer?
Dependiendo del servidor web, pueden tener configurado los servidores para el uso de múltiples versiones de PHP a la vez.
Sin embargo, esta funcionalidad se tiene que activar a través del archivo .htaccess, ya que como hemos indicado para el servidor web entero siempre va a prevalecer la versión de PHP que pongas mediante el Selector de PHP que hay en la sección de Software de cPanel.
Para que cada proyecto web (dominio adicional o subdominio) tenga una versión diferente de PHP, se tiene que añadir las siguientes instrucciones de código en el fichero .htaccess; teniendo en cuenta que después del primer “FilesMatch” hay un espacio, así como también después de “AddHandler”, “AddType” y entre cada versión de php de “AddHandler application” y “AddType application”.
Estructura del .htaccess
<FilesMatch "\.(php|php4|php5|php53|php54|php55|php56|php6|php7|phtml)$">
AddHandler application/x-httpd-alt-phpXX___lsphp .php .php4 .php5 .php53 .php54 .php55 .php56 .php6 .php7 .phtml
AddType application/x-httpd-alt-phpXX___lsphp .php .php4 .php5 .php53 .php54 .php55 .php56 .php6 .php7 .phtml
</FilesMatch>
El caso es que donde pone “XX” hay que sustituirlo por la versión de PHP que se quiera usar, pero sin punto.
Por ejemplo: 44 para PHP 4.4, 51 para PHP 5.1, 52 para PHP 5.2, 53 para PHP 5.3, 54 para PHP 5.4 (como la imagen de arriba), 55 para PHP 5.5, 70 para PHP 7.0, 71 para PHP 7.1, 72 para PHP 7.2, 73 para PHP 7.3
Cómo comprobar que se ha cambiado la versión de PHP
Vamos a crear una estructura de ficheros en la raíz de nuestro servidor:
En cada carpeta va a ir alojados 2 ficheros:
Lo primero que tenemos que hacer es crear un fichero PHP, lo llamaremos «index». Con este fichero, vamos a poder comprobar qué versión de PHP está utilizando el servidor, además de módulos instalados (documentación oficial de PHP). Para ello, vamos a cumplimentar con el siguiente código:
Función phpinfo()
<?php
// Muestra toda la información, por defecto INFO_ALL
phpinfo();
// Muestra solamente la información de los módulos.
// phpinfo(8) hace exactamente lo mismo.
phpinfo(INFO_MODULES);
?>
Y ahora vamos a configurar el fichero .htaccess. Vamos a realizar la prueba en las versiones PHP:
- PHP 4.4
- PHP 5.5
- PHP 7.0
- PHP 7.2
- PHP 7.4
Vamos a añadir las siguientes instrucciones en el fichero .htaccess por cada versión que vamos a utilizar. Recordad que para indicar una versión, tiene que ir sin punto:
.htaccess
<FilesMatch "\.(php|php4|php5|php53|php54|php55|php56|php6|php7|phtml)$">
AddHandler application/x-httpd-alt-phpXX___lsphp .php .php4 .php5 .php53 .php54 .php55 .php56 .php6 .php7 .phtml
AddType application/x-httpd-alt-phpXX___lsphp .php .php4 .php5 .php53 .php54 .php55 .php56 .php6 .php7 .phtml
</FilesMatch>
Una vez que tenemos el fichero index.php y el .htaccess de cada versión, podemos comprobar que el servidor va a utilizar diferentes versiones PHP en cada carpeta
Ejemplo de cambio de versión
Versión PHP 4.4
<FilesMatch "\.(php|php4|php5|php53|php54|php55|php56|php6|php7|phtml)$">
AddHandler application/x-httpd-alt-php44___lsphp .php .php4 .php5 .php53 .php54 .php55 .php56 .php6 .php7 .phtml
AddType application/x-httpd-alt-php44___lsphp .php .php4 .php5 .php53 .php54 .php55 .php56 .php6 .php7 .phtml
</FilesMatch>
Versión PHP 5.5
Versión PHP 5.6 (no funciona)
El código de .htaccess que hemos comentado con anterioridad NO funciona para PHP 5.6, por lo que si se pone “56” el sistema no cogerá esa versión de PHP, sino la asociada a cPanel.
Esto se debe a que es la misma versión de PHP que tienen configurado en nuestro servidor web. Es decir, si por defecto el servidor tiene la versión 5.6, tiene su lógica que no la deje asignarla por .htaccess. En los últimos servidores dados de alta la versión de PHP de base se establece en la 7.2 pero es posible que en alojamientos antiguos tu versión de base sea la 5.6.
Solución
Nuestra recomendación es que en caso de que quieras utilizar la versión 5.6 de PHP en tu servidor web, la establezcas desde el selector de PHP.
Versión PHP 7.0
<FilesMatch "\.(php|php4|php5|php53|php54|php55|php56|php6|php7|phtml)$">
AddHandler application/x-httpd-alt-php7___lsphp .php .php4 .php5 .php53 .php54 .php55 .php56 .php6 .php7 .phtml
AddType application/x-httpd-alt-php7___lsphp .php .php4 .php5 .php53 .php54 .php55 .php56 .php6 .php7 .phtml
</FilesMatch>
Versión PHP 7.2
<FilesMatch "\.(php|php4|php5|php53|php54|php55|php56|php6|php7|phtml)$">
AddHandler application/x-httpd-alt-php72___lsphp .php .php4 .php5 .php53 .php54 .php55 .php56 .php6 .php7 .phtml
AddType application/x-httpd-alt-php72___lsphp .php .php4 .php5 .php53 .php54 .php55 .php56 .php6 .php7 .phtml
</FilesMatch>
Versión PHP 7.4
<FilesMatch "\.(php|php4|php5|php53|php54|php55|php56|php6|php7|phtml)$">
AddHandler application/x-httpd-alt-php74___lsphp .php .php4 .php5 .php53 .php54 .php55 .php56 .php6 .php7 .phtml
AddType application/x-httpd-alt-php74___lsphp .php .php4 .php5 .php53 .php54 .php55 .php56 .php6 .php7 .phtml
</FilesMatch>
Con ello, ya podemos utilizar diferentes versiones PHP para diferentes proyectos web que tengamos alojados en nuestro servidor 🙂
Si te ha parecido interesante este artículo sobre utilizar diferentes versiones PHP en un mismo servidor, tenemos más post que te pueden interesar. Te paso el enlace 😉