У меня несколько виртуальных хостов, и мне нужно запускать разные версии PHP. У меня установлены php-fpm и FastCgi, но как их настроить? Я использую Ubuntu 16.04
С nginx все, что необходимо сделать, использовать сокеты через proxy_pass
:
server{
(...)
location ~ ^/index\.php(/|$) {
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
}
}
С апачем необходимо использовать proxy
:
<FilesMatch "\.php$">
SetHandler "proxy:unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost/"
</FilesMatch>
Таким образом, можно использовать различные сокеты (каждый для различной версии PHP) путем конфигурирования их в каждом Виртуальном Хосте
Возможно, не ответ, что Вы ожидаете, но это становится болезненным для управления несколькими php версиями в машине.
Я нашел, что лучший подход должен иметь более новую php версию (php7 +) как основную, и если мне нужны что-то более старое или другая определенная версия, я использую контейнер с apache/php отсюда или использую это в качестве базового изображения и изменяю его по мере необходимости, это имеет большие инструкции сделать это.
В случае, что мне нужна более старая php версия (неподдерживаемый так быть осторожным), я могу просто создать из более старой версии ОС с поддержкой той конкретной версии.
Преимущества этого подхода, во-первых, что Вы не портите свою машину с большим количеством пакетов и зависимостей. Во-вторых, Вы не загрязняете свою установку php всеми зависимостями и пакетами, которые в конечном счете будут конфликтовать друг с другом из-за несовместимости версии. Наконец, и супер значительно, dockerizing приложения даст Вам воспроизводимый рецепт для Вашей продуктивной среды.
Даже если Вы не выбираете это в качестве своего подхода, смотрите на докера. Это сделает Ваш как более легкий, и это - "вещь", используемая в разработке в наше время.