Apache2: 2 versões php no mesmo VHOST

Apache2: 2 versões php no mesmo VHOST

Estou migrando meu aplicativo do PHP 5.6 para o php 8.0, tendo um front controller redirecionando para meu aplicativo legado ou meu novo aplicativo, dependendo do uri.

Tentei com alias e funciona, mas preciso manter exatamente o mesmo host para ambos e sem alias.

Por exemplo: https://foo.bar.com/my_php80_routes https://foo.bar.com/my_php56_routes

Aqui está minha tentativa insatisfatória com 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>

Procurei outro método, talvez baseado em um cabeçalho HTTP personalizado como "FOOBARAPP_LEGACY: 1", mas não encontrei uma maneira de mapear o HTTP HEADER para um local do sistema de arquivos com o Apache.

Existe alguma outra solução ?

[editar]

Vou tentar me explicar melhor.

O que estou tentando alcançar é ter 2 aplicativos rodando cada um em uma versão PHP diferente, sendo um deles o "Aplicativo Principal" (o novo aplicativo no PHP8.0) e redirecionando para o "Segundo Aplicativo" se a rota não for encontrada por "Principal Aplicativo". Tudo isso totalmente transparente para o usuário final. (mesmo domínio, sem prefixo)

Sehttps://foo.bar.com/postsainda não foi migrado: o aplicativo principal não encontra a rota e redireciona para o segundo aplicativo que servirá o conteúdo.

Quando este ponto final é migrado para "Aplicativo Principal": o Aplicativo Principal encontra a rota e veicula o conteúdo.

Então estou pedindo uma solução que não envolva um/prefixo ou um novo subdomínio.

Responder1

Então, você está tentando canalizar um host virtual específico, através de um pipe, que vai para um módulo proxy para acessar o host em loopback??? Masapenaspara arquivos PHP? Isso parece desnecessariamente complicado.

Por que não executar um segundo host virtual, em uma porta secundária, e usar mod_proxy para lidar com todo o host virtual. (ou seja, geralmente "a maneira" de fazer uma atualização e ainda tê-la voltada para a Internet).

Ou, você sabe, você pode literalmente fazer um host virtual para cada um, conforme você migra. E, em seguida, insira redirecionamentos simples entre hosts virtuais, quando o URL "alternativo" aparecer no host "errado".

Ao lidar com esse tipo de migração, escolhao mais simplesforma de "isto versus aquilo" e rolar dessa forma.

Ou, se eucompletamenteperdi a "pergunta" na sua pergunta... você está tendo sucesso ao executar várias versões do PHP na mesma instância? Por favor, esclareça, tão francamente... énãoalgo que eu recomendaria porque, você sabe... PHP. ;-)

informação relacionada