Apache2 :2 версии php на одном и том же VHOST

Я переношу свое приложение с PHP 5.6 на php 8.0, используя передний контроллер, перенаправляющий на мое старое приложение или мое новое приложение в зависимости от uri.

Я пробовал с псевдонимом, и он работает, но мне нужно сохранить один и тот же хост для обоих и без псевдонима.

Например,: https://foo.bar.com/my_php80_routes https://foo.bar.com/my_php56_routes

Вот моя неудовлетворительная попытка с псевдонимом

<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>

Я искал другой метод, возможно, основанный на пользовательском заголовке HTTP, таком как «FOOBARAPP_LEGACY:1», но я не нашел способ чтобы сопоставить HTTP HEADER с местоположением файловой системы с помощью Apache.

Есть ли другое решение?

[править]

Постараюсь объясниться получше.

Чего я пытаюсь добиться, так это иметь 2 приложения, каждое из которых работает на другой версии PHP, одно из которых является «Основным приложением» (новым приложением на PHP8.0)и перенаправляется на «Второе приложение», если маршрут не найден «Основным приложением». Все это совершенно прозрачно для конечного пользователя. (тот же домен, без префикса)

Еслиhttps://foo.bar.com/postsеще не перенесено :Основное приложение не находит маршрут и перенаправляет на второе приложение, которое будет обслуживать контент.

При переносе этой конечной точки в «Основное приложение» :Основное приложение находит маршрут и обслуживает контент.

Поэтому я прошу решение, которое не включает префикс / или новый субдомен.

0
задан 2 September 2021 в 14:13
1 ответ

Итак, вы пытаетесь направить конкретный виртуальный хост через канал, который идет к прокси-модулю для доступа к хосту по петле??? Но только для файлов PHP? Звучит излишне сложно.

Почему бы не запустить второй виртуальный хост на дополнительном порту и использовать mod_proxy для обработки всего виртуального хоста. (т.е. вообще "путь" сделать апгрейд, и по-прежнему иметь выход в интернет-с).

Или, вы знаете, вы можете буквально сделать виртуальный хост для каждого, когда вы мигрируете. А затем добавить-простую переадресацию между виртуальными хостами, когда «альтернативный» URL появляется на «неправильном» хосте.

Когда вы имеете дело с миграцией такого рода, выберите самую простую форму «это против того» и бросьте туда.

Или, если яполностьюпропустил слово "спросить" в вашем вопросе... успешно ли вы запускаете несколько версий PHP в одном и том же экземпляре? Пожалуйста, уточните, если честно... это , а нето, что я когда-либо рекомендовал, потому что, вы знаете... PHP. ;-)

1
ответ дан 5 September 2021 в 11:28

Теги

Похожие вопросы