Подтвердить что ты не робот

Имеет ли php эквивалент python virtualenv или ruby ​​sandbox?

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

Ответ 3

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

Ответ 4

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

https://github.com/virtphp/virtphp

Ответ 5

(Не закодировал 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, хотя он не готов к развертыванию.

Ответ 7

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