PHP社區提供了幾個管理擴展和包的工具包括 Pecl、 Pear、 Pear2和 Composer。在不瞭解的狀況下去使用這些工具必然會出現困惑,因此下面就簡單介紹下這幾個管理工具。
下面簡要介紹 Pear、Pear package、Pear installer、Pear二、Pyrus、Composer、Pecl。php
Pear 是 PHP 擴展與應用庫(the PHP Extension and Application Repository)的縮寫,是一個 PHP 擴展及應用的一個代碼倉庫。Pear 倉庫代碼是以包(package)分區,每個 Pear package
都是一個獨立的項目有着本身獨立的開發團隊、版本控制、文檔和其餘包的依賴關係信息。Pear package 以 phar、tar 或 zip 發佈。html
Pear 的包管理器是Pear installer
,用來瀏覽並搜索 Pear package、查看最新發行版、下載 Pear package。linux
Pear2 是下一代的 Pear 代碼倉庫,在使用性、速度、安全上都有改進。Pear2 的包管理器 Pyrus 是下一代的 Pear installer,使用 PHP 編寫,以 phar 格式發佈。編程
Composer 是 PHP 中的應用程序級的包依賴管理器。用來管理(安裝/更新)你項目中申明的依賴庫。Composer 的包信息存儲庫是 Packagist。json
Pecl 是 PHP 擴展社區倉庫(The PHP Extension Community Library)的縮寫,Pecl 擴展庫的包(package)是使用 C、C++ 編寫的動態連接庫擴展,在編譯安裝後經過 php.ini 加載,隨 PHP 進程被裝入內存。安全
Pear 安裝主要是安裝 Pear installer 和 Pyrus 這兩個包管理器,而後經過包管理器安裝其餘 Pear package。composer
若是你安裝的是PHP (> 4.3.0),而且編譯時並未使用「./configure flag --without-pear」選項,那麼 Pear installer 的安裝已集成在系統裏。但若是你安裝的 PHP(< 4.3.0),那麼你就須要手動安裝 Pear installer。curl
$ curl -O https://pear.php.net/go-pear....svn
$ sudo php -d detect_unicode=0 go-pear.phar工具
1) 更改 Installation Base 位置
輸入1,而後按下 Enter
輸入 /usr/local/pear,而後按下 Enter
2) 更改 Binaries directory 位置
輸入4,而後按下 Enter
輸入 /usr/local/bin,而後按下 Enter
3)再按下 Enter 一次,讓其默認
4)安裝完成
$ pear -V
$ sudo pear install mypear
由於 Pear 庫中的包都是由 PHP 編寫的的,因此使用只須要在代碼層手動 require/include 引入文件
php pyrus.phar
$ php pyrus.phar
$ 輸入 yes,而後按下Enter
$ 輸入你安裝包存放的位置 /Users/my-project,而後按下Enter
$ 安裝完成
$ php pyrus.phar --version
$ php pyrus.phar install mypear
(1)由於 Pear 庫中的包都是由 PHP 編寫的,因此使用只須要在代碼層手動 require/include 引入文件,但require_once 不被容許
(2)Pyrus 可使用自帶的 autoloader 自動引入
Pecl 能夠經過 Pear 的 Package Manager 的安裝管理方式,來進行下載和安裝。
安裝成功
而使用 Pecl 擴展庫必需要通過下載擴展庫、編譯、安裝、而後加載。而加載
下載 Pecl 擴展庫 extname
(1)經過 Pear 下載 Pecl 擴展庫
$ pecl install extname
(2)官網下載:http://pecl.php.net/
(3)SVN 下載,大多數 Pecl 擴展庫也在 SVN 中
$ svn checkout http://svn.php.net/repository/pecl/extname/trunk extname
編譯、安裝
(1)經過 Pear 下載編譯共享 Pecl 擴展庫 extname
$ pecl install extname 這個過程下載 extname 的源代碼,編譯之,並將建立 extname.so 放置於 PHP 的擴展庫目錄中。
(2)經過 phpize 編譯共享 Pecl 擴展庫 extname
1. 下載 extname 源代碼 2. 進入 extname 目錄 $ cd extname 3. 準備 PHP 擴展庫的編譯環境 $ phpize 4. 編譯 $ ./configure $ make $ make install 成功的安裝並將建立 extname.so 並放置於 PHP 的擴展庫目錄中。
加載
(1)經過 php.ini 加載 extname.so
1):Windows上是加載擴展的動態連接庫後綴是「.dll」,在 Unix 或 Linux 上是「.so」 2):修改 php.ini,擴展已經在 php.ini 裏。若是有 extension=extname.so 那麼去掉前面「;」,或者直接添加 extension=extname.so
下載 composer.phar 到當前目錄
$ curl -sS https://getcomposer.org/installer | php
運行 Composer
$ php composer.phar
查看版本
$ php composer.phar -V
下載安裝包 package
$ php composer.phar install package
(1)使用 autoloader 自動加載
由於 Composer 生成了一個 vendor/autoload.php 文件,能夠直接 require/include 引入這個文件。
因此,Pecl 和 Pear 是互爲補充,管理者擴展與包。
Composer 雖然比 Pear 晚出現10多年,但就像 Pear 官方文檔裏面 「If you read tweets and forums you’ll get that impression that nobody uses PEAR anymore, and everyone is using composer now.」 說的,如今全部人都是在使用 Composer。由於 Pear installer 能的 Composer 都能作,而且能作的更好,但 Composer 能作的,Pear installer 卻不必定能作。舉兩個例子:
既然 Pear installer 已經徹底被 Composer 取代了,那麼 Pear 庫裏面的一些 Pear package 咱們是否也可使用 Composer 包管理器來安裝?畢竟 Pear 庫有 Packagist(Composer 的包信息存儲庫) 沒有的擴展包。因此下面介紹如何使用 Composer 來安裝 Pear package。
修改 Composer 獲取包的渠道爲「pear」,require 下載該渠道下的擴展包,並將 pear-pear2 做爲包前綴避免衝突
{ "repositories": [ { "type": "pear", "url": "https://pear2.php.net" } ], "require": { "pear-pear2.php.net/PEAR2_Text_Markdown": "*", "pear-pear2/PEAR2_HTTP_Request": "*" } }
若是是包使用 Composer 安裝使用,若是是涉及底層擴展則使用 Pecl(也可使用其餘編譯安裝方式) 安裝。