php 安装扩展


PECL 全称 The PHP Extension Community Library
PECL 扩展包含编译进 PHP Core 的 C 语言代码,将 PECL 扩展库 编译 成 可动态加载的 .so 共享库,或采用静态编译与 PHP 源代码 编译为一体的方法 扩展,PECL 扩展库,包含XML 解析数据库访问邮件解析嵌入式的Perl 及 Python 脚本解释器等 PHP 扩展模块,
PEAR(PHP Extension and Application Repository / PHP 扩展和应用仓库) ,打包安装 PHP 扩展库仓库,
通过 PEAR 的 Package Manager 安装管理方式 对 PECL 模块 下载和安装,
在运行效率上 PECL 要高于以往诸多的 PEAR 扩展库
安装扩展
Apache+PHP 或 Nginx+PHP 运行模式不同,WorkerMan 基于PHP命令行 PHP CLI 运行,
php.ini文件可能不同,phpinfo 看到安装某个扩展,不代表命令行 PHP CLI 安装了对应的扩展
PHP CLI 安装了哪些扩展,php -m  列出命令行 PHP CLI 已经安装的扩展
~# php -m
[PHP Modules]
libevent
posix
pcntl
PHP CLI 的 php.ini 的位置
安装扩展 需要手动配置 php.ini 文件
把扩展加进去 运行 php --ini 查找 PHP CLI 的ini文件位置 结果类似如下(各个系统显示结果会有差异):
~# php --ini
Configuration File (php.ini) Path: /etc/php5/cli
Loaded Configuration File:         /etc/php5/cli/php.ini
Scan for additional .ini files in: /etc/php5/cli/conf.d
Additional .ini files parsed:      /etc/php5/cli/conf.d/apc.ini,
/etc/php5/cli/conf.d/libevent.ini,
/etc/php5/cli/conf.d/memcached.ini,

PHP CLI 安装扩展
安装memcached扩展为例

使用 apt 或 yum 命令安装
如果PHP是通过 apt 或者 yum 命令安装的 则扩展也可以通过 apt 或者 yum 安装
debian/ubuntu 等系统 apt安装 PHP扩展方法 非root用户需要加sudo命令
1 利用 apt-cache search 查找扩展包
~# apt-cache search memcached php
php-apc - APC (Alternative PHP Cache) module for PHP 5
php5-memcached - memcached module for php5
2 使用apt-get install安装扩展包
~# apt-get install -y php5-memcached
Reading package lists... Done
Reading state information... Done
centos 等 系统 yum 安装PHP扩展方法
1 利用 yum search 查找扩展包
~# yum search memcached php
php-pecl-memcached - memcached module for php5
2 使用yum install安装扩展包
~# yum install -y php-pecl-memcached
Reading package lists... Done
Reading state information... Done
说明,使用 apt 或者 yum安装 PHP扩展 会自动配置php.ini文件
安装完直接可用 缺点是有些扩展在apt或者yum中没有对应的扩展安装包

使用pecl安装
使用pecl install命令安装扩展
1 pecl install安装
~# pecl install memcached
downloading memcached-2.2.0.tgz ...
Starting to download memcached-2.2.0.tgz (70,449 bytes)
2 配置php.ini
在php.ini文件中添加 extension=memcached.so

源码编译安装
一般安装PHP自带的扩展 以安装 pcntl扩展 为例
1 利用 php -v 命令 查看当前 PHP CLI 版本
~# php -v
PHP 5.6.21-1~dotdeb.0 with Suhosin-Patch (cli) (built: Aug 14 2014 19:55:20)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2014 Zend Technologies
2 根据版本下载PHP源代码
PHP历史版本下载页面 //php.net/releases/
3 解压源码压缩包
下载的压缩包 php-5.6.21.tar.gz
~# tar -zxvf php-5.6.21.tar.gz
php-5.6.21/
php-5.6.21/README.WIN32-BUILD-SYSTEM
php-5.6.21/netware/
4 进入源码中的 ext/pcntl 目录
~# cd php-5.6.21/ext/pcntl/
5 运行 phpize 命令
~# phpize
Configuring for:
PHP Api Version:         20090626
Zend Module Api No:      20090626
Zend Extension Api No:   220090626
6 运行 configure命令
~# ./configure
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
7 运行 make 命令
~# make
/bin/bash /tmp/php-5.6.21/ext/pcntl/libtool --mode=compile cc ...
-I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend...
8 运 行make install 命令
~# make install
Installing shared extensions:     /usr/lib/php5/20090626/
9 配置ini文件
php.ini文件中添加 extension=pcntl.so
此方法 用来安装PHP自带的扩展  如 posix扩展和pcntl扩展 除了用phpize编译某个扩展
也可以重新编译整个PHP 在编译时用参数添加扩展 例如在源码根目录运行
~# ./configure --enable-pcntl --enable-posix ...
~# make && make install

phpize安装
如果 扩展在php源码 ext 目录中没有 这个扩展需要到 //pecl.php.net 下载
以安装libevent扩展为例 假设系统安装了 libevent-dev 库
1 下载libevent扩展文件压缩包(在当前系统哪个目录下载随意)
~# wget http://pecl.php.net/get/libevent-0.1.0.tgz
Resolving pecl.php.net... 104.236.228.160
Connecting to pecl.php.net|104.236.228.160|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 9806 (9.6K) [application/octet-stream]
Saving to: “libevent-0.1.0.tgz”
2 解压扩展文件压缩包
~# tar -zxvf libevent-0.1.0.tgz
package.xml
libevent-0.1.0/config.m4
libevent-0.1.0/CREDITS
3 源码目录
~# cd libevent-0.1.0/
4 运行phpize命令
~# phpize
Configuring for:
PHP Api Version:         20090626
Zend Module Api No:      20090626
Zend Extension Api No:   220090626
5 运行configure命令
~# ./configure
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
6 运行make命令
~# /bin/bash /data/test/libevent-0.1.0/libtool --mode=compile cc  -I. -I/data/test/libevent-0.1.0 -DPHP_ATOM_INC -I/data/test/libevent-0.1.0/include
7 运行make install命令
~# make install
Installing shared extensions:     /usr/lib/php5/20090626/
8 配置ini文件
在php.ini文件中添加 extension=libevent.so

PHP 扩展安装和extension相关