近日 由于 brew 将 tap homebrew-php 废弃 已经无法使用 brew install php70-xxx
来安装扩展,因此不得不使用下载源码编译的形式来安装
第一步 下载源码 php 所有扩展源码都可以在 pecl.php.net 上找到
以安装 redis 扩展为例 wget https://pecl.php.net/get/redis-4.0.1.tgz
第二步 解压源码压缩包tar -zxvf redis-4.0.1.tgz
解压后进入源码目录 cd redis-4.0.1
第三步 执行 phpize
(phpize 命令是用来准备 PHP 扩展库的编译环境的)
然后执行 ./configure
这里如果想要将扩展安装到目录有个参数非常重要
--with-php-config=/usr/local/opt/php@7.1/bin/php-config
php-config 中记录着 php.ini 中的相关配置 其中有个 extension-dir 的配置指定了 PHP 的扩展目录 这样扩展编译后将会安装到这个目录下 这样安装的扩展在 php.ini 中就只需要这样配置 extension=redis.so
第四步 执行 ./configure --with-php-config=/usr/local/opt/php@7.1/bin/php-config
第五步 执行 make
开始编译
第六步 执行 make install
正常会将 redis.so 安装到 php.ini 中配置的 extension-dir (如果 第四步有指定 php-config 的话)
在 php.ini 配置中开启 配置
extension=redis.so
如果没有的话需要自己填写
最后记得重启 php 进程
编译安装中遇到的问题
在安装 mongodb 扩展 执行 make 时 出现一个错误 “'openssl/sha.h' file not found” 显示 openssl 的一个库文件没找到
在确认过本机安装过 openssl 之后根据网上搜索到的解决方案 在 /usr/local/include 建立软连接 -> /usr/local/opt/openssl@1.1/include/openssl/sha.h 错误消失但是发生了其他的错误 编译还依赖openssl 的其他库文件
于是我一时火气直接把 /usr/local/opt/openssl@/include/openssl 这个目录整个复制到了mongodb源码文件下的 include 目录下
当时执行的 cp -R /usr/local/opt/openssl@/include/openssl ~/java/mongodb-1.4.2/include
结果你猜怎么样? 编译通过了 !GoGoGo~~
但是安装后发现并不能正常使用
【使用源码编译安装PHP扩展】xdebug 安装后出现错误警告 PHP Warning: Xdebug MUST be loaded as a Zend extension in Unknown on line 0
解决办法 xdebug 是 Zend 扩展 在php.ini 中开启需要使用 zend_extension=xdebug.so 而不是 extension=xdebug.so
推荐阅读
- 对GO切片的理解
- 小程序商城网站开发秒杀模块篇
- 盲盒购物网站系统开发建设 第三篇
- Netty核心概念之ChannelHandler&Pipeline&ChannelHandlerContext
- 简单的线程池实现多线程对大文件的读取
- SSH 端口转发与 SOCKS 代理
- Ubuntu16.04/Scala2.11.8安装教程
- 学习PHP中的高精度计时器HRTime扩展
- 使用OpenResty+Lua实现灰度测试(金丝雀)