Las versiones de PHP múltiples en la misma caja
-
19-09-2019 - |
Pregunta
¿Es posible tener varias versiones de PHP que se ejecutan en la misma caja (como rieles). Aquí está mi problema, tengo que empezar el desarrollo de un nuevo proyecto y tenía la intención de usar PHP 5.3 por ella para que pueda utilizar la última Zend Framework y el registro activo de la misma.
Sin embargo, el equipo en el que necesito para organizar mi solicitud tiene PHP 4.4 y hay varias otras aplicaciones alojadas allí. No quiero actualizar la versión de PHP en el servidor como en el pasado me he enfrentado a muchos problemas al actualizar la versión de PHP y funciones obsoletas.
Me preguntaba si es posible tener múltiples versiones de PHP en la misma caja y especifique de alguna manera la versión que desea que la aplicación para cargar (similar a los rieles)
Solución
Sí, es posible. De hecho, muchos servidores funcionan de esta manera. Es posible que vea .php4 y .php5 extensiones de vez en cuando lo que indica la versión de que la escritura en particular debe ser manejado con.
ServerFault abordó esta cuestión
Otros consejos
Puede ejecutar varias versiones de PHP en la misma caja utilizando estibador.
Un comando de ejemplo sería:
sudo docker run -d -p 8055:80 -v /var/www:/var/www \
-v /etc/apache2/sites-available:/etc/apache2/sites-available \
-v /etc/apache2/sites-enabled:/etc/apache2/sites-enabled \
codeyourdream/apache-sendmail-php55
Esto es lo que hace este comando:
- Se envía su
/var/www
locales,/etc/apache2/sites-available
y/etc/apache2/sites-enabled
a las carpetas correspondientes del recipiente del estibador. Si sus sitios web locales y / o configuraciones de Apache se encuentran en diferentes carpetas, vuelva a colocar la primera parte del valor-v
. Es decir. el formato es:docker run -v /host/directory:/container/directory -other -options image_name command_to_run
- Se reenvía el puerto 8055 de la máquina local al puerto 80 del contenedor acoplable
- Se ejecuta el contenedor de "codeyourdream / apache-sendmail-php55" imagen
Si se ejecuta este comando, todos sus sitios web locales deben estar disponibles a través del puerto 8055 (es decir, a través de las direcciones URL como http: // localsite: 8055 ) y procesada por PHP 5.5
Consulte https://codeyourdream.com/blog/how-run-multiple-php-versions-apache-one-linux-machine-using-docker para más detalles. nota Afiliación:. Este es el blog de mi equipo
A posibilidad está utilizando una versión de PHP como un módulo de Apache, y la otra versión como un CGI; pero una idea me gusta es mejor tener:
- Varios casos distintos de Apache,
- Cada uno escucha en un puerto diferente (por ejemplo, PHP 4.4 en el puerto 44000, y PHP 5.3.1 en el puerto 53100)
- Y cada uno usando una versión diferente de PHP
De esta manera, usted tiene totalmente diferentes entornos, que funciona de forma independiente entre sí, y se puede configurar / modificar cualquier cosa que desee en cada entorno y sin correr el riesgo de romper cualquiera de los otros.
(Y si no quieren tener números de puerto en sus URL, supongo que se puede poner un proxy frente a las instancias de Apache distintas, por lo que parece que sólo hay una)