升级 Php Curl 扩展遇到的坑
线上服务器php引用的curl扩展依赖的curl库版本是7.29.0,业务想升级到7.71以上版本,因为这个版本支持域名配置HOST,即做一个后台推送功能,在后台配置后,要推送到前端每台服务器上,前端服务器提供了一个只供内部访问的域名和接口用于更新配置,因为前端服务端有多台,所以需要配置相同的域名,但用不同的IP,假设前端接口地址为 www.abc.com/updateConfig,有以下机器:
172.21.107.35
则需要发送两次请求,第一次是向这个地址发送请求:www.abc.com/updateConfig,但www.abc.com要指向172.21.107.36;
第二次还是向www.abc.com/updateConfig发送请求,但www.abc.com要指向 172.21.107.35。
这里不讨论方案本身有优劣,只讲述升级过程中遇到的问题及处理办法。
因为curl扩展是静态编译进PHP可执行文件的,因此需要重新下载新的curl库,这里不讨论细节了,可以在官网:https://curl.haxx.se/download.html
下载就行,简单的configure,再make && make install就行了,假设安装的curl目录为/usr/local/curl,则编译php时指定相应的目录就 行:
即上面的 --with-curl=/usr/local/curl
编译后执行代码结果还是老的版本:
然后用objdump查看php文件引入的curl库的情况:
发现引用库的版本为libcurl.so.4,然后发现这个文件是一个软链,指向/usr/lib64/libcurl.so.4.3.0
通过搜索库里的字符串,发现版本号还是7.29,然后将/usr/lib64/libcurl.so.4指向/usr/lib64/libcurl.so.4.6.0,问题完美解决。
版权声明: 本文为 InfoQ 作者【心平气和】的原创文章。
原文链接:【http://xie.infoq.cn/article/60b9e8987764fc437ee63d2fa】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论