Я привык использовать инструмент virtualenv python для создания отдельных сред, которые могут имитировать среды развертывания для проектов, которые я пишу.
Теперь, я буду работать над проектом php, и мне интересно, есть ли какой-то эквивалент этому? В частности, я надеюсь, что вы сможете запустить один виртуальный хост на apache с одной (более старой) версией php, в то время как все остальное работает в обычной обновленной версии.
Моя машина разработки работает ubuntu 11.04, поэтому предпочтительнее использовать решения, которые работают на этой платформе.
Предполагая, что вы используете mod_php, нет способа загрузить несколько разных версий в один и тот же экземпляр Apache. Вы можете запускать несколько разных версий, если вы используете PHP как CGI или FastCGI, но это само по себе приведет к некоторым различиям в поведении от mod_php.
Поскольку загрузка различных версий php в apache с помощью mod_php кажется невозможной, самый простой способ имитировать установки развертывания и разработки будет с помощью виртуальной машины, о которой вы заявили, что хотите избежать.
Один из способов облегчения бремени vm для разработчиков – это использовать что-то вроде бродяги . С двумя файлами (бродячий файл и файл шеф-повара / марионетки) вы можете «обновить» свои vm, легко создать их и уничтожить для каждого проекта и при необходимости.
Другой альтернативой виртуальным машинам является докер .
virtPHP – это инструмент для создания и управления несколькими изолированными средами PHP на одной машине. Это похоже на виртуальный виртуальный Python, но для PHP. (ПРОЧТИ МЕНЯ)
(Не кодировали php в годах, поэтому это может быть устаревшим)
Насколько я помню, вам просто нужно было указать на другой каталог, в котором находятся ваши библиотеки (включая PATH), используя что-то вроде:
include_path = .:/usr/local/lib/php:./include (this goes in php.ini, default libararies)
и в ваших php-файлах:
ini_set("include_path", ".:../:./include:../include");
В PHP никогда не было надежной упаковочной системы и библиотечного хранилища, такого как perl / python / ruby, PEAR пытался двигаться в этом направлении, но он был очень закрыт в сравнении и был сложным для настройки в многопроектных средах.
Phark пытается построить порт для пива / пакета для php, https://github.com/lox/phark , хотя он не готов к развертыванию.
Вам может быть интересно: https://github.com/phpenv/phpenv
На данный момент решения этой проблемы не существует. Единственное решение, которое подходит близко, – это Vagrant и puPHPet.com, как обсуждалось здесь: https://drupal.org/node/2055947 Почему мы не можем иметь среду, такую как виртуальный или python rbenv? Это хороший проект с открытым исходным кодом. Несколько экземпляров PHP могут быть удобными, если мы хотим протестировать некоторые библиотеки в песочницах, а не во всем мире. Мы можем устанавливать зависимости для разных проектов с помощью диспетчера пакетов, такого как Composer.