php有相当于python的virtualenv或ruby的沙箱吗?

时间:2011-08-24 20:58:15

标签: php configuration environment

我习惯使用python的virtualenv工具来创建可以模仿我编写的项目的部署环境的独立环境。

现在,我将要开发一个php项目,我想知道是否有相同的东西?具体来说,我希望能够使用一个(较旧的)版本的php在apache上运行一个虚拟主机,而其他所有版本都在正常的最新版本上运行。

我的开发机器正在运行ubuntu 11.04,因此首选在该平台上运行的解决方案。

8 个答案:

答案 0 :(得分:10)

假设您使用的是mod_php,则无法将多个不同版本加载到同一个Apache实例中。如果您将PHP作为CGI或FastCGI运行,则可以运行多个不同的版本,但这本身会在mod_php中引入一些行为差异。

答案 1 :(得分:7)

由于使用mod_php在apache中加载不同版本的php似乎不具备可能性,因此模拟部署和开发设置的最简单方法是使用虚拟机,您声明要避免使用虚拟机。

让开发人员更容易负担的一种方法是使用vagrant之类的东西。有两个文件(vagrant文​​件和chef / puppet文件)你可以"版本"你的虚拟机,可以轻松创建它们并在需要时为每个项目销毁它们。

答案 2 :(得分:7)

虚拟机的另一种替代方法是docker

答案 3 :(得分:6)

virtPHP是一种在单台机器上创建和管理多个独立PHP环境的工具。它就像Python的virtualenv,但对于PHP。 (自述)

https://github.com/virtphp/virtphp

答案 4 :(得分:3)

您可能对此感兴趣:https://github.com/phpenv/phpenv

答案 5 :(得分:2)

(Haven在几年内编写了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构建brew / bundler端口,尽管它还没有部署就绪。

答案 6 :(得分:1)

截至目前,没有开箱即用的解决方案。接近的唯一解决方案是Vagrant和puPHPet.com,如下所述:https://drupal.org/node/2055947 为什么我们不能拥有像python的virtualenv或ruby的rbenv这样的环境?它构成了一个很好的开源项目。如果我们想要在沙箱而不是全局中测试一些库,那么多个PHP实例会很方便。我们可以使用像Composer这样的包管理器为不同的项目安装依赖项。

答案 7 :(得分:0)

带有PHP Selector的Cloudlinux已有很长一段时间了。它与流行的控制面板(如CPanel,DirectAdmin等)集成在一起。

每个linux帐户可以拥有自己的php版本,并选择合适的扩展名。

https://www.cloudlinux.com/php-selector