我的名字是 phpenv。我是為人類設計的,旨在幫助簡化多個 PHP 自訂建置安裝的管理。
我最初受到這兩個項目的出色工作的啟發,您已經了解並喜歡這兩個項目,其中包含一大堆以PHP 為中心的附加功能,可幫助您構建第一個版本,簡化管理和使用不同版本,並讓您在新版本之後不斷建立新版本好像沒什麼好說的。
您是 PHP 開發人員,就像我們一樣,您不僅需要擁有最新、最新鮮的解釋器來旋轉您的腳本,而且您還想知道當它們提交給舊的解釋時會如何處理。有沒有想過為什麼不能在自己的開發機器上執行 PHP 應用程式?好吧,您剛剛在他們的開發機器上建立 PHP 時發現了答案。輕鬆自訂您的配置選項,甚至將 pecl 擴充功能建置到 PHP 中或之後手動建置。直接從本機.phpenv
資料夾中儲存的 PHP 原始碼儲存庫配置和安裝相同 PHP 發行版本的自訂版本。
phpenv 在每個使用者目錄~/.phpenv
上運行。 phpenv 中的版本名稱對應於~/.phpenv/versions
的子目錄。例如,您可能有~/.phpenv/versions/5.3.8
和~/.phpenv/versions/5.4.0
。
每個版本都是一個具有自己的二進位檔案的工作樹,例如~/.phpenv/versions/5.4.0/bin/php
和~/.phpenv/versions/5.3.8/bin/pyrus
。 phpenv 為所有已安裝的 PHP 版本中的每個此類二進位檔案產生shim 二進位檔案。
這些墊片是簡單的包裝腳本,位於~/.phpenv/shims
中並檢測您要使用的 PHP 版本。他們將所選版本的目錄插入$PATH
的開頭,然後執行相應的二進位。
由於 shim 方法很簡單,您只需使用$PATH
中的~/.phpenv/shims
即可,它會自動進行版本切換。
對於更自動化的安裝,您可以使用 phpenv-installer。如果您喜歡手動方法,請按照以下步驟操作。
這將使您能夠使用最新版本的 phpenv,並輕鬆分叉並向上游貢獻任何更改。
將 phpenv 簽入~/.phpenv
。
$ git clone [email protected]:phpenv/phpenv.git ~/.phpenv
將~/.phpenv/bin
加入$PATH
以存取phpenv
命令列公用程式。
$ echo 'export PATH="$HOME/.phpenv/bin:$PATH"' >> ~/.bash_profile
將 phpenv init 新增至您的 shell 以啟用填充程式和自動完成功能。
$ echo 'eval "$(phpenv init -)"' >> ~/.bash_profile
重新啟動 shell 以使路徑變更生效。現在您可以開始使用 phpenv。
$ exec $SHELL -l
(可選)將 php-build 安裝到其中以及任何 php.ini 檔案中。 (參見 php-build 首頁)
$ git clone https://github.com/php-build/php-build $(phpenv root)/plugins/php-build
$ phpenv install [any php version]
(可選)重建 shim 二進位。每次安裝新的 PHP 二進位檔案時都應該執行此操作。
$ phpenv rehash
如果您已使用上述說明安裝了 phpenv,則可以隨時使用 git 升級您的安裝。
要升級到 phpenv 的最新開發版本,請使用git pull
:
$ cd ~/.phpenv
$ git pull
預設情況下,php-build 將使用以下指定的預設選項集來編譯 PHP:
通常,如果需要指定 PHP 在系統上的建置方式,可以在PHP_BUILD_CONFIGURE_OPTS
變數中新增設定選項,並在PHP_BUILD_INSTALL_EXTENSION
變數中新增 PHP 擴充功能。
連接 phpenv 應用程式的首選方法是在建置 php 後使用 php-fpm。然後可以將您的網頁伺服器設定為連接到 php-fpm 實例。在這種方法中,php將以呼叫使用者的權限運行,而不必以Web伺服器的身份運行。
php-fpm 可以透過以下方式之一啟動:
~/.phpenv/versions/$VERSION/etc/init.d/php-fpm
~/.phpenv/versions/$VERSION/etc/systemd/system/php-fpm.service
php-fpm (8)
並提供命令列參數預設情況下, php-fpm 在~/.phpenv/versions/$VERSION/etc/php-fpm.conf
下附帶一個配置文件,運行時它將查找該文件。這將 php-fpm 配置為在啟動時監聽localhost:9000
。您可以編輯或取代此文件,或使用--fpm-config
( -y
) 命令列參數提供不同的設定檔。
將不同網頁伺服器連接到 php-fpm 的說明:
或者,您仍然可以透過設定 php-build 來建立 libphp.so apache 擴充來使用 Apache php 模組(遵循說明)。然後 apache 可以在~/.phpenv/versions/$VERSION/libexec
資料夾下找到 libphp.so。此檔案可用於 Apache 的LoadModule php5_module
指令,並要求 Apache 在變更時重新啟動。
除非您必須知道 shell 設定檔中的每一行都在做什麼,否則請跳過本節。
phpenv init
是唯一一個跨越將額外指令載入到 shell 的指令。這是phpenv init
實際執行的操作:
設定您的墊片路徑。這是 phpenv 正常運作的唯一要求。您也可以透過將~/.phpenv/shims
新增至$PATH
來手動執行此操作。
安裝自動完成功能。這完全是可選的,但非常有用。購買~/.phpenv/completions/phpenv.bash
將進行設定。還有一個 Zsh 用戶的~/.phpenv/completions/phpenv.zsh
。
重新調整墊片。有時您需要重建 shim 檔案。在 init 上執行此操作可確保一切都是最新的。您始終可以手動執行phpenv rehash
。
安裝 sh 調度程式。該位元也是可選的,但允許 phpenv 和插件更改當前 shell 中的變量,從而使phpenv shell
等命令成為可能。 sh 排程器不會做任何瘋狂的事情,例如覆蓋cd
或破解您的 shell 提示符,但如果由於某種原因您需要phpenv
成為一個真正的腳本而不是 shell 函數,您可以安全地跳過它。
運行phpenv init -
讓你自己看看到底發生了什麼事。
與git
一樣, phpenv
指令根據其第一個參數委託給子指令。最常見的子指令是:
顯示用法和有用的幫助。當你遇到麻煩的時候,就這樣做吧;)
$ phpenv help
$ phpenv help <subcommand>
php-build 是一個與 phpenv 相容的插件,用於建置和安裝 php。為了能夠使用 phpenv install,請依照上述安裝說明的步驟 5. 所述下載並安裝 php-build 外掛程式。
在執行 phpenv install 之前,請確保建置 php 所需的開發版本已安裝在您的系統中。特別是,如果您想建立 apache 擴展,請確保安裝了 apache2-dev (或您的作業系統的等效項)。
透過將版本名稱寫入~/.phpenv/version
檔案來設定要在所有 shell 中使用的 PHP 全域版本。此版本可以透過每個專案的.phpenv-version
檔案或透過設定PHPENV_VERSION
環境變數來覆寫。
$ phpenv global 5.4.0
特殊版本名稱system
告訴 phpenv 使用系統 PHP(透過搜尋$PATH
偵測到)。
當沒有版本號運行時, phpenv global
會報告目前配置的全域版本。
透過將版本名稱寫入目前目錄中的.phpenv-version
檔案來設定本機每個專案的 PHP 版本。此版本覆蓋全域,並且可以透過設定PHPENV_VERSION
環境變數或使用phpenv shell
命令來覆寫自身。
$ phpenv local 5.3.8
當沒有版本號運行時, phpenv local
會報告目前配置的本機版本。您也可以取消設定本機版本:
$ phpenv local --unset
透過在 shell 中設定PHPENV_VERSION
環境變數來設定特定於 shell 的 PHP 版本。此版本涵蓋專案特定版本和全域版本。
$ phpenv shell 5.3.9
當沒有版本號碼運作時, phpenv shell
會報告PHPENV_VERSION
的目前值。您也可以取消設定 shell 版本:
$ phpenv shell --unset
請注意,您需要啟用 phpenv 的 shell 整合(安裝說明的步驟 3)才能使用此命令。如果您不想使用 shell 集成,您可以簡單地自己設定PHPENV_VERSION
變數:
$ export PHPENV_VERSION=5.3.13
列出 phpenv 已知的所有 PHP 版本,並在目前活動版本旁顯示一個星號。
$ phpenv versions
5.2.8
5.3.13
* 5.4.0 (set by /YOUR-USERNAME/.phpenv/global)
顯示目前活動的 PHP 版本,以及有關其設定方式的資訊。
$ phpenv version
5.4.0 (set by /YOUR-USERNAME/.phpenv/version)
為 phpenv 已知的所有 PHP 二進位檔案安裝填充程式(即~/.phpenv/versions/*/bin/*
)。安裝新版本的 PHP 後執行此命令。
$ phpenv rehash
顯示執行給定命令時 phpenv 將執行的二進位檔案的完整路徑。
$ phpenv which pyrus
/YOUR-USERNAME/.phpenv/versions/5.4.0/bin/pyrus
phpenv 原始碼託管在 GitHub 上。即使您不是 shell 駭客,它也是乾淨、模組化且易於理解的(感謝 rbenv 專案)。
該項目基本上是 rbenv 項目的克隆(閱讀:「搜尋和替換」)。它需要愛和支持。如果您有興趣改進它,請隨時分叉、提交拉取請求並在問題追蹤器上提交錯誤。
(麻省理工學院許可證)
版權所有 (c) 2012 多米尼克·吉利奧
版權所有 (c) 2013 尼克隆巴德
版權所有 (c) 2015 madumlao
特此免費授予任何獲得本軟體和相關文件文件(「軟體」)副本的人不受限制地使用本軟體,包括但不限於使用、複製、修改、合併的權利、發布、分發、再授權和/或銷售軟體的副本,並允許向其提供軟體的人員這樣做,但須滿足以下條件:
上述版權聲明和本授權聲明應包含在本軟體的所有副本或主要部分中。
本軟體以「現況」提供,不提供任何明示或暗示的保證,包括但不限於適銷性、特定用途的適用性和不侵權的保證。 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE軟體.