php是否有一个类似于python的虚拟环境或ruby的沙盒?


Does php have an equivalent to python's virtualenv or ruby's sandbox?

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

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

我的开发机器运行的是ubuntu 11.04,所以在这个平台上工作的解决方案将是首选。

假设您使用的是mod_php,那么就没有办法在同一个Apache实例中加载多个不同的版本。如果你以CGI或FastCGI方式运行PHP,你可以运行多个不同的版本,但这本身就会引入一些与mod_php不同的行为。

另一个虚拟机的替代品是docker。

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

为开发人员减轻虚拟机负担的一种方法是使用像vagrant这样的东西。使用两个文件(vagrant文件和chef/puppet文件),您可以"版本"您的vm,轻松地为每个项目和需要时创建和销毁它们。

virtPHP是用于在一台机器上创建和管理多个隔离的PHP环境的工具。它就像Python的virtualenv,只不过是针对PHP。(自述)

https://github.com/virtphp/virtphp

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

(多年没有编写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构建一个brew/bundler端口,https://github.com/lox/phark,尽管它还没有准备好部署

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

Cloudlinux与PHP选择器有这个年龄。它集成了流行的控制面板,如CPanel, DirectAdmin等。

每个linux帐户可以有自己的php版本,并选择任何他们认为合适的扩展。

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