繁体   English   中英

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

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

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

现在,我将从事一个 php 项目,我想知道是否有任何等效的项目? 具体来说,我希望能够使用一个(旧)版本的 php 在 apache 上运行一个虚拟主机,而其他一切都在正常的最新版本上运行。

我的开发机器运行的是 ubuntu 11.04,因此首选适用于该平台的解决方案。

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

虚拟机的另一个替代方案是docker

virtPHP 是一个用于在单台机器上创建和管理多个隔离的 PHP 环境的工具。 它就像 Python 的 virtualenv,但适用于 PHP。 (自述文件)

https://github.com/virtphp/virtphp

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

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

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

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

(多年没有编写 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 ,尽管它还没有准备好部署。

Cloudlinux with PHP Selector 已经有很多年了。 它与流行的控制面板集成,如 CPanel、DirectAdmin 等。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM