Несколько версий PHP в одном компьютере
-
19-09-2019 - |
Вопрос
Возможно ли иметь несколько версий PHP, работающих на одном и том же компьютере (например, рельсы).Вот моя проблема: мне нужно начать разработку нового проекта, и я планировал использовать для него PHP 5.3, чтобы я мог использовать последнюю версию Zend Framework и активную запись с ней.
Однако машина, на которой мне нужно разместить мое приложение, имеет PHP 4.4, и там размещено несколько других приложений.Я не хочу обновлять версию PHP на сервере, так как в прошлом я сталкивался с множеством проблем при обновлении версии PHP и устаревших функций.
Мне было интересно, можно ли иметь несколько версий PHP в одном и том же компьютере, а затем каким-то образом указать версию, которую вы хотите загрузить в своем приложении (аналогично рельсам)
Решение
Да, это возможно.Фактически, многие серверы работают таким образом.Время от времени вы можете видеть расширения .php4 и .php5, указывающие, с какой версией следует обрабатывать конкретный скрипт.
ServerFault ответил на этот вопрос
Другие советы
Вы можете запускать несколько версий 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, так что кажется, что он только один)