phpize是一个常用的php扩展安装方式,但通过此方式安装需要下载对应的包、phpize,configure,make,make install等,而相比于phpize方式,pecl方式安装php扩展更为简便,我们不用去寻找源码包、下载、编译、安装配置,一个命令搞定,甚至都不用手动编辑php.ini文件。PECL的全称是The PHP Extension Community Library,是一个开放的并通过PEAR(PHP Extension and Application Repository,PHP 扩展和应用仓库)打包格式来打包安装的 PHP扩展库仓库。通过 PEAR 的 Package Manager 的安装管理方式,可以对PECL模块进行下载和安装。
1.pecl安装及使用如下
#ubuntu下安装pecl工具: apt install php-dev php-pear autoconf automake libtool -y #centos下安装pecl工具: yum install php-dev php-pear autoconf automake libtool -y #也可以使用php安装pecl工具 cd /usr/local/php/bin/ wget http://pear.php.net/go-pear.phar -O go-pear.php php go-pear.php #pecl搜索一个扩展:xdebug, root@us12:~# pecl search xdebug WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update Retrieving data...0% Matched packages, channel pecl.php.net: ======================================= Package Stable/(Latest) Local xdebug 2.8.0 (stable) Provides functions for function traces and profiling #列出所有的channels root@us12:~# pecl list-channels Registered Channels: ==================== Channel Alias Summary doc.php.net phpdocs PHP Documentation Team pear.php.net pear PHP Extension and Application Repository pecl.php.net pecl PHP Extension Community Library __uri __uri Pseudo-channel for static packages #执行提示的update操作 root@us12:~# pecl channel-update pecl.php.net Updating channel "pecl.php.net" Update of Channel "pecl.php.net" succeeded #执行之后就不会再提示了 root@us12:~# pecl search xdebug Retrieving data...0% Matched packages, channel pecl.php.net: ======================================= Package Stable/(Latest) Local xdebug 2.8.0 (stable) Provides functions for function traces and profiling #pecl安装扩展 root@us12:~# pecl install swoole
2.pecl有很多命令,可以通过pecl help查看,常用命令如下
build从C的源码中构建扩展
install安装扩展
uninstall卸载扩展
download下载扩展包
list-all列出全部扩展
run-tests运行测试
upgrade升级扩展
upgrade-all升级所有扩展
如pecl list可列出所有已安装包。
build从C的源码中构建扩展 install安装扩展 uninstall卸载扩展download下载扩展包 list-all列出全部扩展 run-tests运行测试upgrade升级扩展upgrade-all升级所有扩展安装时会提示:WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update,显示pecl.php.net更新了协议,可使用命令进行更新channels。另外在启动phpP时偶尔遇到这种报错:PHP Startup: Unable to load dynamic library '/usr/lib/php/20160303/phalcon.so' - /usr/lib/php/20160303/phalcon.so: undefined symbol: php_pdo_get_dbh_ce in Unknown on line 原来是在php.ini中写死的extension=phalcon.so的位置导致的。因为phalcon依赖于json扩展,在php.ini配置文件头部写上extension导致报错,解决方法可以把phalcon的加载放至最后,也可以使用目录加载。在conf.d中新建phalcon.ini文件写入extension=内容,让php根据依赖等自动加载。