PHP 包与扩展的管理工具 Pear、Composer 与 Pecl

PHP社区提供了几个管理扩展和包的工具包括 PeclPearPear2Composer。在不了解的状况下去使用这些工具必然会出现困惑,因此下面就简单介绍下这几个管理工具。

1、简介

下面简要介绍 Pear、Pear package、Pear installer、Pear二、Pyrus、Composer、Pecl。php

Pear

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

Pear2 是下一代的 Pear 代码仓库,在使用性、速度、安全上都有改进。Pear2 的包管理器 Pyrus 是下一代的 Pear installer,使用 PHP 编写,以 phar 格式发布。编程

Composer

Composer 是 PHP 中的应用程序级的包依赖管理器。用来管理(安装/更新)你项目中申明的依赖库。Composer 的包信息存储库是 Packagist。json

Pecl

Pecl 是 PHP 扩展社区仓库(The PHP Extension Community Library)的缩写,Pecl 扩展库的包(package)是使用 C、C++ 编写的动态连接库扩展,在编译安装后经过 php.ini 加载,随 PHP 进程被装入内存。安全

2、发布时间轴

图片描述

3、Mac 安装与使用

Pear

Pear 安装主要是安装 Pear installer 和 Pyrus 这两个包管理器,而后经过包管理器安装其余 Pear package。composer

(1)Pear installer

若是你安装的是PHP (> 4.3.0),而且编译时并未使用“./configure flag --without-pear”选项,那么 Pear installer 的安装已集成在系统里。但若是你安装的 PHP(< 4.3.0),那么你就须要手动安装 Pear installer。curl

  1. 下载 go-pear.phar 文件

    $ curl -O https://pear.php.net/go-pear....svn

  2. 全局安装 Pear 命令和安装一些 Pear 包

    $ sudo php -d detect_unicode=0 go-pear.phar工具

  3. 配置 Pear 进行安装

    1) 更改 Installation Base 位置

    输入1,而后按下 Enter
    输入 /usr/local/pear,而后按下 Enter

    2) 更改 Binaries directory 位置

    输入4,而后按下 Enter
    输入 /usr/local/bin,而后按下 Enter

    3)再按下 Enter 一次,让其默认

    4)安装完成

  4. 查看版本

    $ pear -V

  5. 安装 Pear package 名称为 mypear

    $ sudo pear install mypear

  6. 使用安装包 mypear

由于 Pear 库中的包都是由 PHP 编写的的,因此使用只须要在代码层手动 require/include 引入文件

(2)Pyrus
  1. Pyrus 正常工做须要 phar、simplexml、libxml二、spl 和 pcre 扩展,在 PHP (> 5.3.0) 中是默认开启的
  2. 下载文件 pyrus.phar

    $ wget http://pear2.php.net/pyrus.phar

  3. 第一次使用先运行php pyrus.phar

    $ php pyrus.phar
    $ 输入 yes,而后按下Enter
    $ 输入你安装包存放的位置 /Users/my-project,而后按下Enter
    $ 安装完成

  4. 查看版本

    $ php pyrus.phar --version

  5. 安装 Pear package 名称为 mypear

    $ php pyrus.phar install mypear

  6. 使用安装包 mypear

    (1)由于 Pear 库中的包都是由 PHP 编写的,因此使用只须要在代码层手动 require/include 引入文件,但require_once 不被容许

    (2)Pyrus 可使用自带的 autoloader 自动引入

Pecl

Pecl 能够经过 Pear 的 Package Manager 的安装管理方式,来进行下载和安装。

图片描述

安装成功

而使用 Pecl 扩展库必需要通过下载扩展库、编译、安装、而后加载。而加载

  1. 下载 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
  2. 编译、安装

    (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 的扩展库目录中。
  3. 加载

    (1)经过 php.ini 加载 extname.so

    1):Windows上是加载扩展的动态连接库后缀是“.dll”,在 Unix 或 Linux 上是“.so”
       
       2):修改 php.ini,扩展已经在 php.ini 里。若是有 extension=extname.so 那么去掉前面“;”,或者直接添加 extension=extname.so
  4. 按照扩展文档方式启用扩展

Composer

  1. Composer 须要 PHP(> 5.3.2)
  2. 下载 composer.phar 到当前目录

    $ curl -sS https://getcomposer.org/installer | php
  3. 运行 Composer

    $ php composer.phar
  4. 查看版本

    $ php composer.phar -V
  5. 下载安装包 package

    $ php composer.phar install package
  6. 使用安装包

    (1)使用 autoloader 自动加载

由于 Composer 生成了一个 vendor/autoload.php 文件,能够直接 require/include 引入这个文件。

4、比较

扩展与包

  1. PHP的扩展(extension)这里应称为“模块(module)”是 C、C++ 编写的功能合集,而包(package)是 PHP 编写的功能合集
  2. PHP的包(package)以动态连接 .dll、.so 形式加载,而包则是直接引入经过 require/include 方式加載

因此,Pecl 和 Pear 是互为补充,管理者扩展与包。

Pear installer 与 Composer

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 却不必定能作。举两个例子:

  1. Pear installer 做为系统级软件包,一般须要 root 或管理员权限。而且对于一台机器上多个项目很难使用不一样版本库,但 Composer 只需你在项目根目录下修改 composer.json 文件后 update 就能够对该项目的依赖库进行版本的修改。
  2. Pear installer 依赖关系模糊,但 Composer 有申明依赖关系的文件 composer.json(位于项目根目录下),而且还有 composer.lock(位于项目根目录下)文件相似锁文件会使任何人创建项目都将下载与指定版本彻底相同的依赖,从而减轻潜在的错误对部署的影响。

5、使用 Composer 安装 Pear package

既然 Pear installer 已经彻底被 Composer 取代了,那么 Pear 库里面的一些 Pear package 咱们是否也可使用 Composer 包管理器来安装?毕竟 Pear 库有 Packagist(Composer 的包信息存储库) 没有的扩展包。因此下面介绍如何使用 Composer 来安装 Pear package。

  1. 修改 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": "*"
        }
    }
  2. 完成后,代码位于项目目录 vendor 文件夹中。应用时直接使用 autoloader 自动加载

6、总结

若是是包使用 Composer 安装使用,若是是涉及底层扩展则使用 Pecl(也可使用其余编译安装方式) 安装。

7、参考资料

  1. PEAR简介:用PEAR来写你的下一个php程序
  2. 基于 PHP5 面向对象特性的 PECL 扩展 Perl 与 PDO 编程
  3. PECL 扩展库安装
  4. What is the difference between PEAR and PEAR2?
  5. PHP7 學習筆記
相关文章
相关标签/搜索