Несколько версий PHP на одной коробке - PullRequest
5 голосов
/ 15 декабря 2009

Возможно ли иметь несколько версий PHP на одном компьютере (например, на rails). Вот моя проблема, мне нужно начать разработку нового проекта, и я планировал использовать PHP 5.3 для него, чтобы я мог использовать последнюю версию Zend Framework и активную запись с ним.
Однако на компьютере, где мне нужно разместить свое приложение, установлен PHP 4.4, и на нем размещено несколько других приложений. Я не хочу обновлять версию PHP на сервере, так как в прошлом я сталкивался с множеством проблем при обновлении версии PHP и устаревших функций.
Мне было интересно, возможно ли иметь несколько версий PHP на одном компьютере, а затем как-то указать версию, которую вы хотите, чтобы ваше приложение загружало (аналогично rails)

Ответы [ 3 ]

4 голосов
/ 15 декабря 2009

Да, это возможно. На самом деле, многие серверы работают таким образом. Время от времени вы можете видеть расширения .php4 и .php5, указывающие, с какой версией должен обрабатываться этот конкретный скрипт.

ServerFault ответил на этот вопрос

Запуск php4 и php5 вдоль друг друга

3 голосов
/ 03 мая 2017

Вы можете запустить несколько версий 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://localsite:8055) и обработаны PHP 5.5

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

0 голосов
/ 15 декабря 2009

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

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

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

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

...