一文精通php多版本管理工具phpbrew使用教程
phpbrew構(gòu)建和安裝多個 PHP 版本
phpbrew 是一個工具,可以在 $HOME 目錄中構(gòu)建和安裝多個 PHP 版本。
phpbrew 的功能包括
將配置選項簡化為變體,不再擔(dān)心路徑問題。
使用不同的變體構(gòu)建 PHP,如 PDO、mysql、sqlite、debug 等。
編譯 Apache PHP 模塊,并按不同版本分開。
在個人目錄中構(gòu)建和安裝 PHP,無需 root 權(quán)限。
輕松切換版本,與 bash/zsh shell 集成。
自動功能檢測。
輕松在當(dāng)前環(huán)境中安裝和啟用 PHP 擴(kuò)展。
在系統(tǒng)范圍內(nèi)安裝多個 PHP。
針對 HomeBrew 和 MacPorts 的路徑檢測優(yōu)化。
要求
請查看 Requirement[1] 在開始之前。你需要安裝一些用于構(gòu)建 PHP 的開發(fā)包。
安裝
只需下載它:
curl -L -O https://github.com/phpbrew/phpbrew/releases/latest/download/phpbrew.phar chmod +x phpbrew.phar
然后,你可以將其安裝到 bin 文件夾中:
sudo mv phpbrew.phar /usr/local/bin/phpbrew
確保在你的 $PATH
環(huán)境變量中有 /usr/local/bin
。
設(shè)置
初始化一個用于你的 shell 環(huán)境的 bash 腳本:
phpbrew init
將以下行添加到你的 .bashrc 或 .zshrc 文件:
[[ -e ~/.phpbrew/bashrc ]] && source ~/.phpbrew/bashrc
設(shè)置查找前綴
你可以設(shè)置你首選的用于查找?guī)斓哪J(rèn)前綴,可用選項有 macports、homebrew、debian、ubuntu 或自定義路徑:
對于 Homebrew 用戶:
phpbrew lookup-prefix homebrew
對于 Macports 用戶:
phpbrew lookup-prefix macports
基本用法
列出已知版本:
$ phpbrew known 7.0: 7.0.3, 7.0.2, 7.0.1, 7.0.0 ... 5.6: 5.6.18, 5.6.17, 5.6.16, 5.6.15, 5.6.14, 5.6.13, 5.6.12, 5.6.11 ... 5.5: 5.5.32, 5.5.31, 5.5.30, 5.5.29, 5.5.28, 5.5.27, 5.5.26, 5.5.25 ... 5.4: 5.4.45, 5.4.44, 5.4.43, 5.4.42, 5.4.41, 5.4.40, 5.4.39, 5.4.38 ... 5.3: 5.3.29, 5.3.28 ...
顯示更多次要版本:
phpbrew known --more
更新發(fā)布信息:
phpbrew update
獲取舊版本(低于 5.4)
請注意,我們不保證可以成功構(gòu)建官方不支持的 PHP 版本,請不要報告有關(guān)舊版本的問題,這些問題將不會修復(fù)。
phpbrew update --old
列出已知的舊版本(低于 5.4)
phpbrew known --old
開始構(gòu)建自己的 PHP
使用默認(rèn)變體構(gòu)建和安裝 PHP:
phpbrew install 5.4.0 +default
這里建議使用默認(rèn)變體集,其中包括最常用的變體。如果你需要進(jìn)行最小安裝,只需刪除默認(rèn)變體集。
你可以通過傳遞 -j
或 --jobs
選項啟用并行編譯,以下是一個示例:
phpbrew install -j $(nproc) 5.4.0 +default
帶有測試:
phpbrew install --test 5.4.0
帶有調(diào)試信息:
phpbrew -d install --test 5.4.0
安裝舊版本(低于 5.3):
phpbrew install --old 5.2.13
安裝下一個(不穩(wěn)定)版本:
phpbrew install next as php-7.1.0
從 GitHub 標(biāo)簽安裝:
phpbrew install github:php/php-src@PHP-7.0 as php-7.0.0
清理構(gòu)建目錄:
phpbrew clean php-5.4.0
變體
PHPBrew 為你整理了配置選項,你可以簡單地指定變體名稱,phpbrew 將檢測包含路徑和用于配置的構(gòu)建選項。
PHPBrew 提供了默認(rèn)變體和一些虛擬變體。默認(rèn)變體包括最常用的變體,而虛擬變體定義了一個變體集,你可以使用一個虛擬變體一次性啟用多個變體。
要查看這些變體中包含了什么,只需運行variants
子命令來列出這些變體:
$ phpbrew variants Variants: all, apxs2, bcmath, bz2, calendar, cgi, cli, ctype, dba, debug, dom, embed, exif, fileinfo, filter, fpm, ftp, gcov, gd, gettext, hash, iconv, icu, imap, intl, ipc, ipv6, json, kerberos, mbregex, mbstring, mcrypt, mhash, mysql, openssl, pcntl, pcre, pdo, pgsql, phar, posix, readline, session, soap, sockets, sqlite, tidy, tokenizer, xml_all, xmlrpc, zip, zlib, gmp Virtual variants: dbs: sqlite, mysql, pgsql, pdo mb: mbstring, mbregex neutral: default: filter, dom, bcmath, ctype, mhash, fileinfo, pdo, posix, ipc, pcntl, bz2, zip, cli, json, mbstring, mbregex, calendar, sockets, readline, xml_all
使用變體構(gòu)建 PHP 的示例:
phpbrew install 5.3.10 +default phpbrew install 5.3.10 +mysql +pdo phpbrew install 5.3.10 +mysql +pdo +apxs2 phpbrew install 5.3.10 +mysql +pdo +apxs2=/usr/bin/apxs2
要啟用一個變體,只需在變體名稱前加上前綴+
,例如:
+mysql
要禁用一個變體,只需在變體名稱前加上前綴-
。
例如,如果我們希望使用默認(rèn)選項和數(shù)據(jù)庫支持(mysql、sqlite、postgresql)構(gòu)建 PHP,你可以簡單地運行:
phpbrew install 5.4.5 +default+dbs
你還可以使用額外的變體構(gòu)建 PHP:
phpbrew install 5.3.10 +mysql+sqlite+cgi phpbrew install 5.3.10 +mysql+debug+pgsql +apxs2 phpbrew install 5.3.10 +pdo +mysql +pgsql +apxs2=/usr/bin/apxs2
要構(gòu)建帶有 pgsql(PostgreSQL)擴(kuò)展的 PHP:
phpbrew install 5.4.1 +pgsql+pdo
或在 Mac OS X 上使用 postgresql 基本目錄構(gòu)建 pgsql 擴(kuò)展:
phpbrew install 5.4.1 +pdo+pgsql=/opt/local/lib/postgresql91/bin
pgsql 路徑是pg_config
的位置,你可以在/opt/local/lib/postgresql91/bin
找到pg_config
。如果要使用中性編譯選項構(gòu)建 PHP,你可以指定中性虛擬變體,這意味著 phpbrew 不會添加任何額外的編譯選項,包括--disable-all
。但是,一些選項(例如--enable-libxml
)仍然會自動添加以支持 pear 安裝。你可以使用中性構(gòu)建 PHP:
phpbrew install 5.4.1 +neutral
有關(guān)更多詳細(xì)信息,請查看 PHPBrew Cookbook[2]。
額外的配置選項
要傳遞額外的配置參數(shù),可以這樣做:
phpbrew install 5.3.10 +mysql +sqlite -- \ --enable-ftp --apxs2=/opt/local/apache2/bin/apxs
使用和切換
使用(臨時切換版本):
phpbrew use 5.4.22
切換 PHP 版本(切換默認(rèn)版本):
phpbrew switch 5.4.18
關(guān)閉:
phpbrew off
如果啟用了 Apache PHP 模塊,請記得注釋或刪除這些設(shè)置。
$ sudo vim /etc/httpd/conf/httpd.conf # LoadModule php5_module /usr/lib/httpd/modules/libphp5.3.21.so # LoadModule php5_module /usr/lib/httpd/modules/libphp5.3.20.so
列出已安裝的 PHP
phpbrew list
擴(kuò)展安裝程序
您還可以輕松地安裝 PHP 擴(kuò)展,無論是與 PHP 源代碼一起提供的擴(kuò)展,還是來自 PECL。
如果在 PHP 源代碼中找到擴(kuò)展目錄,PHPBrew 將自動切換到 PHP 源目錄并安裝擴(kuò)展。
如果在 PHP 源代碼中未找到擴(kuò)展目錄,PHPBrew 將從 PECL http://pecl.php.net 獲取擴(kuò)展包。
PHPBrew 還創(chuàng)建擴(kuò)展配置以啟用安裝的擴(kuò)展,因此您無需手動編寫配置文件即可啟用它。擴(kuò)展配置目錄在:
~/.phpbrew/php/php-{version}/var/db
安裝擴(kuò)展 - 最簡單的方式
在安裝任何 PHP 擴(kuò)展之前,應(yīng)設(shè)置當(dāng)前運行的 PHP 版本:
phpbrew use php-5.5.6
然后運行ext install
來安裝擴(kuò)展:
phpbrew ext install apcu phpbrew ext install memcache
使用穩(wěn)定性安裝擴(kuò)展
使用穩(wěn)定性標(biāo)簽安裝擴(kuò)展:
phpbrew ext install xdebug stable phpbrew ext install xdebug latest phpbrew ext install xdebug beta
使用版本名稱安裝擴(kuò)展:
phpbrew ext install xdebug 2.0.1
展示擴(kuò)展配置選項
要查看是否有一些構(gòu)建擴(kuò)展的配置選項,可以使用 ext show
命令。請注意,show
命令僅適用于內(nèi)置擴(kuò)展:
phpbrew ext show apcu
使用自定義選項安裝擴(kuò)展
phpbrew ext install yaml -- --with-yaml=/opt/local
從 GitHub 安裝擴(kuò)展
特殊前綴 github:
告訴 phpbrew 從 php-memcached-dev/phpmemcached 存儲庫獲取擴(kuò)展并切換到 php7 分支:
phpbrew ext install github:php-memcached-dev/php-memcached php7 -- --disable-memcached-sasl
使用特定下載工具安裝擴(kuò)展
目前,phpbrew 支持 4 種不同的下載工具實現(xiàn):
php_curl
- 使用內(nèi)置的 php curl 擴(kuò)展下載文件。php_stream
- 使用內(nèi)置的 php 流包裝器下載文件。curl
wget
可以使用你喜歡的下載工具替換默認(rèn)的下載工具:
phpbrew ext install --downloader php_curl apcu
基于 curl 的 php 擴(kuò)展下載工具支持 User-Agent 和代理設(shè)置,因此如果遇到一些網(wǎng)絡(luò)問題,你可以這樣做:
phpbrew ext install --download php_curl --http-proxy=... --http-proxy-auth=... apcu
啟用擴(kuò)展
你還可以通過 PECL 安裝擴(kuò)展并手動啟用它:
pecl install mongo phpbrew ext enable mongo
ext enable
命令允許你創(chuàng)建一個配置文件 {當(dāng)前 php base}/var/db/{extension name}.ini
來啟用該擴(kuò)展。
配置當(dāng)前 PHP 版本的 php.ini
只需運行:
phpbrew config
你可以將 EDITOR 環(huán)境變量指定為你喜歡的編輯器:
export EDITOR=vim
然后運行:
phpbrew config
升級 phpbrew
要升級 phpbrew,只需運行 self-update 命令,此命令允許你安裝來自 GitHub 主分支的最新版本:
phpbrew self-update
已安裝的 PHP(s)
已安裝的 PHP 位于 ~/.phpbrew/php,例如,PHP 5.4.20 位于:
~/.phpbrew/php/5.4.20/bin/php
你應(yīng)該將配置文件放在:
~/.phpbrew/php/5.4.20/etc/php.ini
擴(kuò)展配置文件應(yīng)放在:
~/.phpbrew/php/5.4.20/var/db ~/.phpbrew/php/5.4.20/var/db/xdebug.ini ~/.phpbrew/php/5.4.20/var/db/apc.ini ~/.phpbrew/php/5.4.20/var/db/memcache.ini ... etc
快速在目錄之間切換的命令
切換到 PHP 構(gòu)建目錄:
phpbrew build-dir
切換到 PHP 分發(fā)目錄:
phpbrew dist-dir
切換到 PHP etc 目錄:
phpbrew etc-dir
切換到 PHP var 目錄:
phpbrew var-dir
PHP FPM
phpbrew 還提供了一些有用的 FPM 管理子命令。要使用它們,請記住在構(gòu)建自己的 PHP 時啟用 +fpm 變體。
啟動 php-fpm,只需鍵入:
phpbrew fpm start
停止 php-fpm,輸入:
phpbrew fpm stop
顯示 php-fpm 模塊:
phpbrew fpm module
測試 php-fpm 配置:
phpbrew fpm test
編輯 php-fpm 配置:
phpbrew fpm config
已安裝的 php-fpm 位于 ~/.phpbrew/php/php-*/sbin。
對應(yīng)的 php-fpm.conf 位于 ~/.phpbrew/php/php-*/etc/php-fpm.conf.default,你可以將默認(rèn)配置文件復(fù)制到所需的位置。例如,
cp -v ~/.phpbrew/php/php-*/etc/php-fpm.conf.default ~/.phpbrew/php/php-*/etc/php-fpm.conf php-fpm --php-ini {php config file} --fpm-config {fpm config file}
啟用版本信息提示
要在 shell 提示中添加 PHP 版本信息,可以使用 "PHPBREW_SET_PROMPT=1" 變量。
默認(rèn)情況下是 "PHPBREW_SET_PROMPT=0"(禁用)。要啟用它,可以將此行添加到你的 ~/.bashrc 文件,并將此行放在 source ~/.phpbrew/bashrc 之前。
export PHPBREW_SET_PROMPT=1
要在提示中嵌入版本信息,可以使用 phpbrew_current_php_version shell 函數(shù),該函數(shù)在 .phpbrew/bashrc 中定義。并且你可以在你的 PS1 變量中設(shè)置版本信息,例如:
PS1=" \$(phpbrew_current_php_version) \$ "
已知問題
對于 PHP-5.3+ 版本,“在 OS X 上構(gòu)建 intl 64 位失敗” https://bugs.php.net/bug.php?id=48795
要使用 GD 擴(kuò)展構(gòu)建 PHP,你需要指定你的 libpng 目錄和 libjpeg 目錄,例如:
phpbrew install php-5.4.10 +default +mysql +intl +gettext +apxs2=/usr/bin/apxs2 \ -- --with-libdir=lib/x86_64-linux-gnu \ --with-gd=shared \ --enable-gd-natf \ --with-jpeg-dir=/usr \ --with-png-dir=/usr
參考資料
[1]Requirement: https://github.com/phpbrew/phpbrew/wiki/Requirement
[2]PHPBrew Cookbook: https://github.com/phpbrew/phpbrew/wiki
以上就是一文精通php多版本管理工具phpbrew使用教程的詳細(xì)內(nèi)容,更多關(guān)于php多版本管理工具phpbrew的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
php數(shù)組函數(shù)序列之in_array() - 查找數(shù)組中是否存在指定值
in_array()定義和用法 in_array() 函數(shù)查找數(shù)組中是否存在指定值2011-11-11php緩沖 output_buffering和ob_start使用介紹
這篇文章主要介紹了php緩沖 output_buffering和ob_start的相關(guān)資料,需要的朋友可以參考下2014-01-01php Undefined index和Undefined variable的解決方法
這段時間在做項目過程中老是出現(xiàn)這個提示,起初是用$act來接受表單post過來的數(shù)據(jù)2008-03-03PHP similar_text 字符串的相似性比較函數(shù)
PHP尋找兩個字符串的相似性的similar_text ()函數(shù)使用方法2010-05-05