前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >升级Php Curl扩展遇到的坑

升级Php Curl扩展遇到的坑

作者头像
心平气和
发布2020-09-22 16:08:01
1.9K0
发布2020-09-22 16:08:01
举报
文章被收录于专栏:程序员升级之路

线上服务器php引用的curl扩展依赖的curl库版本是7.29.0,业务想升级到7.71以上版本,因为这个版本支持域名配置HOST,即做一个后台推送功能,在后台配置后,要推送到前端每台服务器上,前端服务器提供了一个只供内部访问的域名和接口用于更新配置,因为前端服务端有多台,所以需要配置相同的域名,但用不同的IP,假设前端接口地址为 www.abc.com/updateConfig,有以下机器:

172.21.107.36

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时指定相应的目录就 行:

代码语言:javascript
复制
./configure  --prefix=/opt/php --with-config-file-path=/opt/php/etc 
--with-config-file-scan-dir=/opt/php/etc/php.d 
 --enable-fpm --disable-opcache --disable-fileinfo 
 --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd 
 --with-iconv=/usr/local/libiconv --with-freetype-dir 
 --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr 
 --enable-xml --disable-rpath --enable-bcmath --enable-shmop 
 --enable-exif --enable-sysvsem --enable-inline-optimization 
 --with-curl=/usr/local/curl --enable-mbregex --enable-mbstring 
 --with-password-argon2 --with-sodium=/usr/local --with-gd 
 --with-openssl --with-mhash --enable-pcntl --enable-sockets 
 --with-xmlrpc --enable-ftp --enable-intl --with-xsl 
 --with-gettext --enable-zip 
--enable-soap --disable-debug

即上面的 --with-curl=/usr/local/curl

编译后执行代码结果还是老的版本:

代码语言:javascript
复制
php -r 'var_dump(curl_version());'

然后用objdump查看php文件引入的curl库的情况:

代码语言:javascript
复制
 objdump  -x /opt/php/bin/php|grep curl|grep NEEDED

发现引用库的版本为libcurl.so.4,然后发现这个文件是一个软链,指向/usr/lib64/libcurl.so.4.3.0

代码语言:javascript
复制
ll /usr/lib64/libcurl.so.4

通过搜索库里的字符串,发现版本号还是7.29,然后将/usr/lib64/libcurl.so.4指向/usr/lib64/libcurl.so.4.6.0,问题完美解决。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员升级之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档