Apache2: 2 versiones de php en el mismo VHOST

Apache2: 2 versiones de php en el mismo VHOST

Estoy migrando mi aplicación de PHP 5.6 a PHP 8.0 al tener un controlador frontal que redirige a mi aplicación heredada o mi nueva aplicación según el uri.

Lo intenté con alias y funciona, pero necesito mantener exactamente el mismo host para ambos y ningún alias.

P.ej: https://foo.bar.com/my_php80_routes https://foo.bar.com/my_php56_routes

Aquí está mi intento insatisfactorio con alias.

<VirtualHost *:80>
    ServerName foo.bar.com

    DocumentRoot /var/www/html/foobar/public
    # Unwanted prefix
    Alias /legacy /var/www/html/foobar/legacy/web

    <Directory /var/www/html/foobar/public>
        AllowOverride none
        Require all granted

        SetEnv APP_ENV "dev"

        # Handled by php8.0 : ok
        <FilesMatch \.php$>
            SetHandler "proxy:unix:/var/run/php/php8.0-fpm.sock|fcgi://localhost/"
        </FilesMatch>

        FallbackResource /index.php
        DirectoryIndex index.php
    </Directory>

    <Directory /var/www/html/foobar/legacy/web>
        AllowOverride none
        Require all granted

        # Handled by libapache2-mod-php5.6 : ok
        FallbackResource /app_dev.php
        DirectoryIndex app_dev.php
    </Directory>

    ErrorLog /var/log/apache2/foobar.log
    CustomLog /var/log/apache2/foobar.log combined
</VirtualHost>

Busqué otro método, tal vez basado en un encabezado HTTP personalizado como "FOOBARAPP_LEGACY: 1", pero no encontré una manera de asignar el ENCABEZADO HTTP a una ubicación del sistema de archivos con Apache.

Hay alguna otra solucion ?

[editar]

Intentaré explicarme mejor.

Lo que estoy tratando de lograr es tener 2 aplicaciones, cada una ejecutándose en una versión de PHP diferente, una de las cuales es la "Aplicación principal" (la nueva aplicación en PHP8.0) y redirigir a la "Segunda aplicación" si la ruta no se encuentra en "Principal". Aplicación". Todo ello siendo completamente transparente para el usuario final. (mismo dominio, sin prefijo)

Sihttps://foo.bar.com/postsaún no se ha migrado: la aplicación principal no encuentra la ruta y redirige a la segunda aplicación que proporcionará el contenido.

Cuando este punto final se migra a la "Aplicación principal": la aplicación principal encuentra la ruta y ofrece el contenido.

Entonces estoy pidiendo una solución que no implique un prefijo/o un nuevo subdominio.

Respuesta1

Entonces, ¿estás intentando canalizar un host virtual en particular, a través de una tubería, que va a un módulo proxy para acceder al host en bucle invertido? Perosolopara archivos PHP? Eso suena innecesariamente complicado.

¿Por qué no ejecutar un segundo host virtual, en un puerto secundario, y usar mod_proxy para manejar todo el host virtual? (es decir, generalmente "la forma" de realizar una actualización y seguir teniendo acceso a Internet).

O, ya sabes, puedes literalmente hacer un host virtual para cada uno, a medida que migras. Y luego introduzca redireccionamientos simples entre hosts virtuales, cuando la URL "alternativa" aparezca en el host "incorrecto".

Cuando esté lidiando con este tipo de migración, elijalo más simpleforma de "esto versus aquello" y rodar en esa dirección.

O, si yocompletamenteMe perdí la "pregunta" en su pregunta... ¿Está teniendo éxito al ejecutar varias versiones de PHP en la misma instancia? Por favor aclare, ya que francamente... esnoalgo que alguna vez recomendaría porque, ya sabes... PHP. ;-)

información relacionada