簡體   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