当前位置 > it书童 > php > 正文

pecl 安装 php 扩展

php it书童 2019-11-16 15:38:22 0赞 0踩 517阅读 0评论

虽然 php 扩展工具 pecl 是一个笨拙古老的工具,但聊胜于无,总比直接下载扩展包,手工编译要方便。但最近用 pecl install redis 却有如下报错:

pecl No releases available for package "pecl.php.net/redis"

第一反应就是:又被该死的网络环境墙了吧。可直接访问 http://pecl.php.net/ 是正常的,而且启用代理也无效

后来从一网友帖子中得到启发,通过 pecl search redis 能看到具体的错误,我的环境看到的是报错是 /tmp/pear 没有写的权限,于是改权限:

$ sudo chmod -R 777 /tmp/pear

再次执行,又有 warning 信息

WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update

按提示执行升级

$ sudo pecl channel-update pecl.php.net
Updating channel "pecl.php.net"
Update of Channel "pecl.php.net" succeeded

然后又有新的 Warning

$ sudo pecl install redis

Warning: popen() has been disabled for security reasons in OS/Guess.php on line 241

修改 php.ini 文件,启用函数 popen 与 exec

再次安装

$ sudo pecl install redis
downloading redis-5.1.1.tgz ...
Starting to download redis-5.1.1.tgz (245,205 bytes)
...................................................done: 245,205 bytes
25 source files, building
running: phpize
Configuring for:
PHP Api Version:         20180731
Zend Module Api No:      20180731

一切顺利

$ php -m | grep redis
redis

如果是要指定不同的版本,如我用 lnmp 一键安装包配置了多个 php版本,默认是 php7.3,现在想在 php7.1 安装扩展,就需要到 php7.1 指定目录执行

$ cd /usr/local/php7.1/
$ sudo ./bin/pecl install redis

注意!默认情况下,pecl 安装完成后修改的是 /usr/local/php/etc/php.ini 而不是 /usr/local/php7.1/etc/php.ini, 需要自己手动修改

转载须注明出处:https://www.itshutong.com/articles/355/pecl-installing-php-extension
关于我
一个文科出身的程序员,追求做个有趣的人,传播有价值的知识,微信公众号主要分享读书思考心得,不会有代码类文章,非程序员的同学请放心订阅
发表评论
我有句话,不知当讲不当讲?
要讲之前请先 登录