PHP扩展安装的三种方法

本文详细介绍Swoole扩展在CentOS 6.8系统下的安装流程,包括使用PHP核心扩展、PECL扩展及手动编译安装三种方法,提供安装步骤、注意事项及扩展管理技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

软件版本

本文所使用的操作系统,PHP,Swoole扩展的版本信息如下:

# 操作系统版本
[admin@sparklee ~]$ cat /etc/issue
CentOS release 6.8 (Final)

# PHP版本
[admin@sparklee ~]$ php -v
PHP 5.5.38 (cli) (built: Oct 12 2018 20:42:20) 

# PHP扩展 - Swoole版本
swoole-1.9.23

安装方法1. PHP核心扩展安装

如果php是通过源码进行编译安装的话,则只需要在配置php源码时,附加上相应的选项即可:

# 第一步:下载php源码,解压
[admin@sparklee ~]$ wget http://cn2.php.net/distributions/php-5.5.38.tar.gz
[admin@sparklee ~]$ tar zxvf php-5.5.38.tar.gz
[admin@sparklee ~]$ cd php-5.5.38

# 第二步:配置php

# 例如,将pdo_mysql核心扩展进行静态编译安装
[admin@sparklee ~]$ ./configure --with-pdo-mysql

# 类似的,可以静态编译安装各种php核心扩展,如:
[admin@sparklee ~]$ ./configure \
--prefix=/home/admin/app/php --with-config-file-path=/home/admin/app/php/etc \
--enable-fpm --with-fpm-user=admin --with-fpm-group=admin \
--with-mysql --with-mysqli --with-pdo-mysql \
--with-curl \
--with-readline \
--enable-mbstring \
--enable-pcntl \
--enable-sysvmsg

# 第三步:编译
[admin@sparklee ~]$ make

# 第四步:安装
[admin@sparklee ~]$ make install

参考:

mysql扩展pdo-mysql安装:http://php.net/manual/zh/ref.pdo-mysql.php

进程控制扩展pcntl安装:http://php.net/manual/zh/pcntl.installation.php

激活mbstring函数:http://php.net/manual/zh/mbstring.installation.php

安装方法2. PECL扩展安装

因为本文所使用的测试机已经安装了Swoole扩展,为了演示Swoole扩展的安装过程,故先将已安装的Swoole扩展卸载掉,卸载方法如下:

# 查看已安装的PHP PECL扩展列表
[admin@sparklee ~]$ pecl list
Installed packages, channel pecl.php.net:
=========================================
Package Version State
swoole  1.9.23  stable
SeasLog 1.6.9   stable
xdebug  2.3.3   stable

# 卸载Swoole扩展
[admin@sparklee ~]$ pecl uninstall swoole
Unable to remove "extension=swoole.so" from php.ini
uninstall ok: channel://pecl.php.net/swoole-1.9.23

# 手动删除php.ini中"extension=swoole.so"
# 顺便提一下,".so"文件即shared object file,共享对象文件,亦即动态库dynamic library

接下来看看如何安装PECL扩展:

# 安装PECL Swoole扩展
[admin@sparklee ~]$ pecl install swoole-1.9.23 > install.log

# 手动修改php.ini文件,并添加一行:
extension=swoole.so

没错,PECL扩展的安装就是这么简单,两步搞定。

上文在执行PECL Swoole扩展安装命令时,我特意将安装日志重定向保存到了install.log文件中,目的就是为能够进一步分析通过pecl install命令安装PHP扩展时,具体都干了些啥。OK,现在,就让我们来详细分析一下安装日志的内容吧:

[admin@sparklee ~]$ vim install.log

# 第一步:自动下载swoole-1.9.23源码包(默认从站点http://pecl.php.net/package/swoole下载)
# 源码包的默认下载位置为:/tmp/pear/temp/swoole

downloading swoole-1.9.23.tgz ...
Starting to download swoole-1.9.23.tgz (708,921 bytes)
..............................done: 708,921 bytes
209 source files, building

# 第二步:执行phpize生成编译检测脚本(即:在swoole源码目录下生成./configure等文件)

running: phpize
Configuring for:
PHP Api Version:         20121113
Zend Module Api No:      20121212
Zend Extension Api No:   220121212
building in /tmp/pear/temp/pear-build-adminyaZcfk/swoole-1.9.23

# 第三步:执行./configure做编译配置检测
# Q: 为什么"--with-php-config"的值是"/home/admin/app/php/bin/php-config"?,
# A: 因为本文php的安装目录为/home/admin/app/php

running: /tmp/pear/temp/swoole/configure --with-php-config=/home/admin/app/php/bin/php-config
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for a sed that does not truncate output... /bin/sed
......
......
......
creating libtool
appending configuration tag "CXX" to libtool
configure: creating ./config.status
config.status: creating config.h


# 第四步:执行make,进行编译
running: make
/bin/sh /tmp/pear/temp/pear-build-adminyaZcfk/swoole-1.9.23/libtool --mode=compile cc  -I. ......
......
......
......
Build complete.
Don't forget to run 'make test'.

# 第五步:执行make install,进行安装
running: make INSTALL_ROOT="/tmp/pear/temp/pear-build-adminyaZcfk/install-swoole-1.9.23" install
Installing shared extensions:     /tmp/pear/temp/pear-build-adminyaZcfk/install-swoole-1.9.23/home/admin/app/php/lib/php/extensions/no-debug-non-zts-20121212/
......
......
......
Build process completed successfully
Installing '/home/admin/app/php/lib/php/extensions/no-debug-non-zts-20121212/swoole.so'
install ok: channel://pecl.php.net/swoole-1.9.23
configuration option "php_ini" is not set to php.ini location
You should add "extension=swoole.so" to php.ini

根据上文对install.log安装日志的分析可知,通过pecl install命令安装PECL扩展,事际上就是自动执行了上述的5个步骤,即:

(1) 第一步:自动下载swoole-1.9.23源码包

(2) 第二步:phpize,生成编译检测脚本

(3) 第三步:configure,做编译配置检测

(4) 第四步:make,编译

(5) 第五步:make install,安装

最后:手动添加"extension=swoole.so"到php.ini即可。

事实上,如何你自己写了一个很不错的php扩展,可以考虑提交到官方扩展仓库pecl.php.net上,如果pecl官方接受了你的扩展申请并将其纳为官方扩展,那么别人就可以很容易的通过pecl install命令安装你的php扩展了。然而,有一些php扩展可能并未纳入pecl官方扩展,那要如何安装这些非官方扩展呢?其实安装的方法与pecl install一键安装的原理是一样的,只不过需要我们手动通过执行phpize/configure/make/make install进行编译安装而已,这也就是"其他扩展"的安装方法。

安装方法3. 其他扩展安装

如上文所述,其他扩展的安装方法其实就是要手动完成pecl install命令自动完成的5个步骤:

# 第一步:从官方仓库pecl.php.net下载swoole-1.9.23源码包,解压并进入源码目录
[admin@sparklee ~]$ wget http://pecl.php.net/get/swoole-1.9.23.tgz
[admin@sparklee ~]$ tar zxvf swoole-1.9.23.tgz
[admin@sparklee ~]$ cd swoole-1.9.23

# 第二步:执行phpize来生成编译检测脚本
[admin@sparklee ~]$ phpize
Configuring for:
PHP Api Version:         20121113
Zend Module Api No:      20121212
Zend Extension Api No:   220121212

# 第三步:执行configure来做编译配置检测
[admin@sparklee ~]$ ./configure --with-php-config=/home/admin/app/php/bin/php-config

# 第四步:执行make进行编译
[admin@sparklee ~]$ make 

# 第五步:执行make install进行安装
[admin@sparklee ~]$ make install

最后:手动添加"extension=swoole.so"到php.ini即可。

注意:通过手动执行phpize/configure/make/make install进行安装的扩展,pecl命令是无法进行管理的

# 通过pecl list命令无法查看到手动编译安装的swoole扩展

[admin@sparklee ~]$ pecl list
Installed packages, channel pecl.php.net:
=========================================
Package Version State
SeasLog 1.6.9   stable
xdebug  2.3.3   stable

# 通过pecl uninstall卸载手动安装的swoole扩展时,会提示pecl/swoole扩展未安装

[admin@sparklee ~]$ pecl uninstall swoole
pecl/swoole not installed

如果想要删除手动安装的php扩展,只需要:

(1)手动删除扩展共享对象文件:rm /home/admin/app/php/lib/php/extensions/no-debug-non-zts-20121212/swoole.so

(2)手动删除php.ini中的"extension=swoole.so"即可

(3)如果启动了php-fpm,安装或删除扩展后,需要重启php-fpm:pkill php-fpm && php-fpm

参考

1. PECL 扩展库安装:http://php.net/manual/zh/install.pecl.php

2. 编译安装Swoole:https://wiki.swoole.com/wiki/page/6.html

3. How to install more PHP extensions:https://github.com/docker-library/docs/blob/master/php/README.md#how-to-install-more-php-extensions

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值