Вопрос

Возможно ли иметь несколько версий PHP, работающих на одном и том же компьютере (например, рельсы).Вот моя проблема: мне нужно начать разработку нового проекта, и я планировал использовать для него PHP 5.3, чтобы я мог использовать последнюю версию Zend Framework и активную запись с ней.
Однако машина, на которой мне нужно разместить мое приложение, имеет 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 вашего локального компьютера на порт 80 контейнера Docker.
  • Он запускает контейнер из образа «codeyourdream/apache-sendmail-php55».

Если вы запустите эту команду, все ваши локальные веб-сайты будут доступны через порт 8055 (т.через URL-адреса, такие как http://локальный сайт:8055) и обрабатывается PHP 5.5.

Видеть https://codeyourdream.com/blog/how-run-multiple-php-versions-apache-one-linux-machine-using-docker Больше подробностей.Примечание о принадлежности:это блог моей команды.

Возможно использование одной версии PHP в качестве модуля Apache, а другой версии в качестве CGI;но идея, которая мне нравится больше, состоит в том, чтобы иметь:

  • Несколько различных экземпляров Apache,
  • Каждый слушает свой порт (например, PHP 4.4 на порту 44000 и PHP 5.3.1 на порту 53100)
  • И каждый использует другую версию PHP

Таким образом, у вас есть совершенно разные среды, которые работают независимо друг от друга, и вы можете настраивать/изменять все, что захотите, в каждой среде, не рискуя нарушить работу других.

(И если вы не хотите, чтобы в ваших URL-адресах были номера портов, я полагаю, вы можете поместить прокси-сервер перед отдельными экземплярами Apache, так что кажется, что он только один)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top