Возможно ли иметь несколько версий PHP, работающих в одном и том же поле (например, рельсы). Вот моя проблема: мне нужно приступить к разработке нового проекта и планировать использовать для него PHP 5.3, чтобы я мог использовать с ним последнюю структуру Zend и активную запись.
Однако на машине, где мне нужно разместить мое приложение, есть PHP 4.4, и там есть несколько других приложений. Я не хочу обновлять версию PHP на сервере, поскольку в прошлом я столкнулся с множеством проблем при обновлении версии PHP и устаревших функций.
Мне было интересно, возможно ли иметь несколько версий PHP в одном окне, а затем как-то указать версию, которую вы хотите загрузить в приложение (аналогично рельсам)
Да, это возможно. Фактически, многие серверы работают таким образом. Время от времени вы можете видеть расширения .php4 и .php5, указывая, с какой версией должен обрабатываться конкретный скрипт.
ServerFault обратился к этому вопросу
Запуск php4 и php5 вдоль друг друга
Вы можете запускать несколько версий PHP в одном окне с помощью Docker.
Пример команды:
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
Вот что делает эта команда:
/var/www
, /etc/apache2/sites-available
и /etc/apache2/sites-enabled
в соответствующие папки контейнера Docker. Если ваши локальные веб-сайты и / или конфигурации apache расположены в разных папках, замените первую часть значения -v
. То есть формат: docker run -v /host/directory:/container/directory -other -options image_name command_to_run
Если вы запустите эту команду, все ваши локальные сайты должны быть доступны через порт 8055 (то есть через URL-адреса, такие как http: // localsite: 8055 ) и обрабатываться с помощью PHP 5.5
Подробнее см. https://codeyourdream.com/blog/how-run-multiple-php-versions-apache-one-linux-machine-using-docker . Примечание о присоединении: это блог моей команды.
Возможность использования одной версии PHP в качестве модуля Apache, а другая версия – как CGI; но идея, которую я вроде как лучше, это иметь:
Таким образом, у вас есть совершенно разные среды, которые работают независимо друг от друга, и вы можете настраивать / изменять все, что угодно, в каждой среде, не рискуя сломать любой из других.
(И если вы не хотите иметь номера портов в своих URL-адресах, я полагаю, вы можете поставить прокси перед вашими отдельными экземплярами Apache, так что кажется, что есть только один)