命令列工具
phpenv/phpenv avatar
phpenv/phpenv

phpenv/phpenv:從 README 拆解用途、入口與限制

簡單的 PHP 版本管理。有沒有想過為什麼不能在自己的開發機器上執行 PHP 應用程式?

1,870 個 Star143 個 ForkShellMIT
GitHub

秒懂

它是什麼?
Simple PHP version management. Ever wondered why you can't run a PHP app on your own development machine?。本文依 README 的具體內容整理功能邊界、操作線索、維護訊號與授權影響。
適合誰用?
phpenv/phpenv 適合需要 README 已列出能力,並能配合其資料形式、命令入口與維護方式的使用者;不適合把文件之外的效能或相容性當成既定保證的情境。採用前先依 phpenv 的 README 執行最小範例,觀察實際輸出、錯誤位置與設定檔變化,再決定是否接入正式流程。
可以商用嗎?
可以。MIT 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
還在維護嗎?
有在維護。儲存庫最近一次提交在 47 天前。
用什麼語言寫的?
主要是 Shell(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月14日)與我們的分析,不構成法律意見。

開源專案深度解析

phpenv:README 如何界定專案用途

第 1 節核對:phpenv 是一個命令列工具,用於在單一機器上安裝和管理多個 PHP 建置。README 將其描述為「簡單的 PHP 版本管理」,並說它是為人類設計的。該專案最初受 rbenv 和 ruby-build 啟發,並加入了針對 PHP 的擴充功能,用於建置版本、管理不同版本以及反覆建置新版本。描述中提到,它幫助你了解腳本在舊版直譯器下的行為,並避免 PHP 應用無法在自己的開發機器上執行的問題。

phpenv/phpenv 的 README 在本節還提供了可核對的具體線索:phpenv - PHP multi-version installation and management for humans.。這使本節的判斷能落在專案實際名稱、介面與資料上,而不是套用同類工具的想像。My name is phpenv. I was designed for humans, to help simplify the management。讀者可以把這些內容對照目前分支的 README 與相關路徑,分辨文件明確承諾的功能和文章沒有足夠證據延伸的部分。

of multiple PHP custom build installations.。對 phpenv 的第 1 個面向而言,這個差異很重要:一份清單、函式庫、命令列工具、模板或服務的使用成本並不相同。若 README 展示了命令,應觀察該命令的輸入與輸出;若只列出分類、範例或連結,則只能據此說明索引方式與文件邊界。不要把倉庫的描述、星數或作者自報內容當成效能、穩定性或安全保證。

第 1 節的採用核對:採用 phpenv/phpenv 前,可針對專案本身做一個小型核對:先依 README 的安裝或入口取得 phpenv,再用文件中的最小範例,記錄終端輸出、產生的檔案或畫面變化。若專案是資料整理或範例集合,應檢查分類、圖示、連結和貢獻規則是否符合團隊需要;若專案涉及執行環境,則要檢查版本、設定檔和失敗時的錯誤位置。這些觀察點比抽象地詢問「是否值得採用」更能反映 phpenv/phpenv 的真實邊界。

phpenv:核心資料與操作入口

第 2 節核對:安裝後,phpenv 會將自身注入到 PATH 中,因此任何 php、php-fpm 或其他 PHP 可執行檔的呼叫都會首先啟動 phpenv。然後,它會掃描目前專案目錄中名為 .php-version 的檔案。如果找到,該檔案決定該目錄中使用的 PHP 版本。phpenv 在 ~/.phpenv/versions/ 下的安裝中查詢該版本。每個版本目錄包含自己的二進位檔、函式庫、設定檔和手冊頁,包括 php、php-fpm、pecl、pyrus 和 php.ini。你可以使用類似 `phpenv local 8.3.13` 的指令設定版本,該指令會將版本寫入目前目錄的 .php-version 檔案。不同的專案可以使用不同的版本,當你切換目錄時,phpenv 會隨之切換。

phpenv/phpenv 的 README 在本節還提供了可核對的具體線索:I was originally inspired by the outstanding work of。這使本節的判斷能落在專案實際名稱、介面與資料上,而不是套用同類工具的想像。[rbenv][rbenv-url] and [ruby-build][ruby-build-url]。讀者可以把這些內容對照目前分支的 README 與相關路徑,分辨文件明確承諾的功能和文章沒有足夠證據延伸的部分。

with a whole bunch of PHP centric additions。對 phpenv 的第 2 個面向而言,這個差異很重要:一份清單、函式庫、命令列工具、模板或服務的使用成本並不相同。若 README 展示了命令,應觀察該命令的輸入與輸出;若只列出分類、範例或連結,則只能據此說明索引方式與文件邊界。不要把倉庫的描述、星數或作者自報內容當成效能、穩定性或安全保證。

第 2 節的採用核對:採用 phpenv/phpenv 前,可針對專案本身做一個小型核對:先依 README 的安裝或入口取得 phpenv,再用文件中的最小範例,記錄終端輸出、產生的檔案或畫面變化。若專案是資料整理或範例集合,應檢查分類、圖示、連結和貢獻規則是否符合團隊需要;若專案涉及執行環境,則要檢查版本、設定檔和失敗時的錯誤位置。這些觀察點比抽象地詢問「是否值得採用」更能反映 phpenv/phpenv 的真實邊界。

phpenv:命令、設定或檔案的實際角色

第 3 節核對:README 記錄了兩種安裝方式。第一種在 macOS 和 Linux 上使用 Homebrew:執行 `brew install phpenv/tap/phpenv`,然後將 `eval "$(phpenv init -)"` 新增到 shell 設定檔中。第二種是手動從 GitHub 檢出:將倉庫複製到 ~/.phpenv,將 ~/.phpenv/bin 新增到 PATH,新增 init 行,然後重新啟動 shell。建置 PHP 版本需要 php-build 外掛,將其安裝為 phpenv 外掛,位於 $(phpenv root)/plugins/php-build 下。安裝新的 PHP 二進位檔後,你可能需要執行 `phpenv rehash` 來重建 shim 二進位檔。升級透過 git pull 在 ~/.phpenv 目錄中完成。

phpenv/phpenv 的 README 在本節還提供了可核對的具體線索:to help you build your first release, simplify managing and working。這使本節的判斷能落在專案實際名稱、介面與資料上,而不是套用同類工具的想像。with diffirent releases and keep you building new release after new。讀者可以把這些內容對照目前分支的 README 與相關路徑,分辨文件明確承諾的功能和文章沒有足夠證據延伸的部分。

You are a PHP developer, like we are, and you not only have to have the。對 phpenv 的第 3 個面向而言,這個差異很重要:一份清單、函式庫、命令列工具、模板或服務的使用成本並不相同。若 README 展示了命令,應觀察該命令的輸入與輸出;若只列出分類、範例或連結,則只能據此說明索引方式與文件邊界。不要把倉庫的描述、星數或作者自報內容當成效能、穩定性或安全保證。

第 3 節的採用核對:採用 phpenv/phpenv 前,可針對專案本身做一個小型核對:先依 README 的安裝或入口取得 phpenv,再用文件中的最小範例,記錄終端輸出、產生的檔案或畫面變化。若專案是資料整理或範例集合,應檢查分類、圖示、連結和貢獻規則是否符合團隊需要;若專案涉及執行環境,則要檢查版本、設定檔和失敗時的錯誤位置。這些觀察點比抽象地詢問「是否值得採用」更能反映 phpenv/phpenv 的真實邊界。

phpenv:適用範圍與未說明部分

第 4 節核對:phpenv 提供了三種版本選擇範圍。`phpenv global` 將版本寫入 ~/.phpenv/version,並應用於所有 shell,除非被覆寫。`phpenv local` 在目前目錄中寫入 .php-version 檔案,為該專案覆寫全域設定。`phpenv shell` 設定目前 shell 的 PHPENV_VERSION 環境變數,覆寫前兩者。每個指令不帶引數時顯示目前設定的版本。特殊名稱 `system` 告訴 phpenv 使用 PATH 中找到的系統 PHP。README 還展示了 `phpenv versions` 列出所有已知版本並在作用中版本上標星,`phpenv version` 顯示目前版本及其來源,`phpenv rehash` 為所有 PHP 二進位檔安裝 shim,`phpenv which` 顯示給定指令的完整路徑。

phpenv/phpenv 的 README 在本節還提供了可核對的具體線索:latest and freshest interpreter to spin your scripts but you also care to。這使本節的判斷能落在專案實際名稱、介面與資料上,而不是套用同類工具的想像。see what how they get treated when submitted to older interpretations.。讀者可以把這些內容對照目前分支的 README 與相關路徑,分辨文件明確承諾的功能和文章沒有足夠證據延伸的部分。

Ever wondered why you can't run a PHP app on your own development machine? Well。對 phpenv 的第 4 個面向而言,這個差異很重要:一份清單、函式庫、命令列工具、模板或服務的使用成本並不相同。若 README 展示了命令,應觀察該命令的輸入與輸出;若只列出分類、範例或連結,則只能據此說明索引方式與文件邊界。不要把倉庫的描述、星數或作者自報內容當成效能、穩定性或安全保證。

第 4 節的採用核對:採用 phpenv/phpenv 前,可針對專案本身做一個小型核對:先依 README 的安裝或入口取得 phpenv,再用文件中的最小範例,記錄終端輸出、產生的檔案或畫面變化。若專案是資料整理或範例集合,應檢查分類、圖示、連結和貢獻規則是否符合團隊需要;若專案涉及執行環境,則要檢查版本、設定檔和失敗時的錯誤位置。這些觀察點比抽象地詢問「是否值得採用」更能反映 phpenv/phpenv 的真實邊界。

phpenv:維護訊號與版本判讀

第 5 節核對:README 解釋說 php-build 是一個與 phpenv 相容的外掛,負責編譯和安裝 PHP。它使用預設設定選項、依版本的設定定義以及環境變數(如 PHP_BUILD_CONFIGURE_OPTS 和 PHP_BUILD_INSTALL_EXTENSION)來自訂建置。對於網頁伺服器整合,建議的方法是 PHP-FPM:建置 PHP 後,可以從 ~/.phpenv/versions/$VERSION/etc/init.d/php-fpm 啟動 php-fpm,或透過 systemd 單元,或手動啟動。預設的 php-fpm 設定監聽 localhost:9000。或者,你可以透過 php-build 建置 Apache 模組 libphp.so,並將其用於 LoadModule 指令。README 提供了 Apache 和 NGINX wiki 文章的連結,用於連接 php-fpm。

phpenv/phpenv 的 README 在本節還提供了可核對的具體線索:you just found the answer doing when taken for a ride building PHP。這使本節的判斷能落在專案實際名稱、介面與資料上,而不是套用同類工具的想像。on their dev machines. Easily customize your configuration options and even。讀者可以把這些內容對照目前分支的 README 與相關路徑,分辨文件明確承諾的功能和文章沒有足夠證據延伸的部分。

build pecl extensions into PHP or manually afterwards. Configure and install。對 phpenv 的第 5 個面向而言,這個差異很重要:一份清單、函式庫、命令列工具、模板或服務的使用成本並不相同。若 README 展示了命令,應觀察該命令的輸入與輸出;若只列出分類、範例或連結,則只能據此說明索引方式與文件邊界。不要把倉庫的描述、星數或作者自報內容當成效能、穩定性或安全保證。

第 5 節的採用核對:採用 phpenv/phpenv 前,可針對專案本身做一個小型核對:先依 README 的安裝或入口取得 phpenv,再用文件中的最小範例,記錄終端輸出、產生的檔案或畫面變化。若專案是資料整理或範例集合,應檢查分類、圖示、連結和貢獻規則是否符合團隊需要;若專案涉及執行環境,則要檢查版本、設定檔和失敗時的錯誤位置。這些觀察點比抽象地詢問「是否值得採用」更能反映 phpenv/phpenv 的真實邊界。

phpenv:授權對使用方式的影響

第 6 節核對:README 中有一個「Neckbeard Configuration」部分,詳細說明了 `phpenv init -` 的具體操作:設定 shims 路徑,安裝自動補全(bash 或 zsh),重新產生 shim,並安裝一個 shell 排程器,允許外掛變更 shell 變數。你可以執行 `phpenv init -` 查看實際輸出。phpenv 還可以透過環境變數進行設定:PHPENV_VERSION 指定版本,PHPENV_ROOT 預設為 ~/.phpenv,PHPENV_DEBUG 啟用偵錯輸出,PHPENV_HOOK_PATH 列出鉤子路徑,PHPENV_DIR 設定搜尋 .php-version 檔案的起始目錄。

phpenv/phpenv 的 README 在本節還提供了可核對的具體線索:custom builds of the same PHP release version directly from the PHP source。這使本節的判斷能落在專案實際名稱、介面與資料上,而不是套用同類工具的想像。code repository kept in your local .phpenv folder.。讀者可以把這些內容對照目前分支的 README 與相關路徑,分辨文件明確承諾的功能和文章沒有足夠證據延伸的部分。

After phpenv injects itself into your PATH at installation time, any invocation。對 phpenv 的第 6 個面向而言,這個差異很重要:一份清單、函式庫、命令列工具、模板或服務的使用成本並不相同。若 README 展示了命令,應觀察該命令的輸入與輸出;若只列出分類、範例或連結,則只能據此說明索引方式與文件邊界。不要把倉庫的描述、星數或作者自報內容當成效能、穩定性或安全保證。

第 6 節的採用核對:採用 phpenv/phpenv 前,可針對專案本身做一個小型核對:先依 README 的安裝或入口取得 phpenv,再用文件中的最小範例,記錄終端輸出、產生的檔案或畫面變化。若專案是資料整理或範例集合,應檢查分類、圖示、連結和貢獻規則是否符合團隊需要;若專案涉及執行環境,則要檢查版本、設定檔和失敗時的錯誤位置。這些觀察點比抽象地詢問「是否值得採用」更能反映 phpenv/phpenv 的真實邊界。

編輯結論

phpenv/phpenv 適合需要 README 已列出能力,並能配合其資料形式、命令入口與維護方式的使用者;不適合把文件之外的效能或相容性當成既定保證的情境。採用前先依 phpenv 的 README 執行最小範例,觀察實際輸出、錯誤位置與設定檔變化,再決定是否接入正式流程。

官方來源

  1. Official README
  2. Project repository
  3. Release notes
社群筆記

社群筆記