Есть ли у php эквивалент для python в virtualenv или в песочнице ruby? - PullRequest
42 голосов
/ 25 августа 2011

Я привык использовать инструмент python virtualenv для создания отдельных сред, которые могут имитировать среды развертывания для проектов, которые я пишу.

Теперь, я собираюсь работать над проектом php, и мне интересно, есть ли какой-нибудь эквивалент этого? В частности, я надеюсь, что смогу запустить один виртуальный хост на apache с одной (более старой) версией php, в то время как все остальное работает на обычной обновленной версии.

Моя машина для разработки работает под управлением Ubuntu 11.04, поэтому предпочтительнее использовать решения, работающие на этой платформе.

Ответы [ 7 ]

10 голосов
/ 28 сентября 2011

Предполагая, что вы используете mod_php, невозможно загрузить несколько разных версий в один и тот же экземпляр Apache.Вы можете запустить несколько разных версий, если вы используете PHP как CGI или FastCGI, но это само по себе приведет к некоторым отличиям в поведении от mod_php.

7 голосов
/ 26 марта 2015

virtPHP - это инструмент для создания и управления несколькими изолированными средами PHP на одной машине.Это как Python's virtualenv, но для PHP.(README)

https://github.com/virtphp/virtphp

7 голосов
/ 19 июля 2013

Другой альтернативой виртуальным машинам является docker .

7 голосов
/ 30 сентября 2011

Поскольку загрузка различных версий php в apache с помощью mod_php представляется невозможной, самый простой способ имитировать настройки развертывания и разработки будет с использованием виртуальной машины, которую вы, как вы заявили, хотели бы избежать.

Один из способов облегчить бремя vm's для разработчиков - использовать что-то вроде vagrant . С помощью двух файлов (файла vagrant и файла chef / puppet) вы можете «создавать версии» своих виртуальных машин, легко создавать их и уничтожать для каждого проекта и при необходимости.

5 голосов
/ 30 октября 2014

Вас может заинтересовать это: https://github.com/phpenv/phpenv

2 голосов
/ 24 сентября 2011

(Не кодировал 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 пытается создать порт brew / bundler для php, https://github.com/lox/phark,, хотя он не готов к развертыванию.

1 голос
/ 10 декабря 2013

На данный момент нет готового решения этой проблемы.Единственное решение, которое подходит ближе, - это Vagrant и puPHPet.com, о которых говорилось здесь: https://drupal.org/node/2055947 Почему у нас не может быть среды вроде python virtualenv или ruby's rbenv?Это хороший проект с открытым исходным кодом.Несколько экземпляров PHP могут быть полезны, если мы хотим протестировать некоторые библиотеки в песочницах, а не глобально.Мы можем установить зависимости для разных проектов, используя менеджер пакетов, такой как Composer.

...