当前位置: 首页 > article >正文

配置宝塔php curl 支持http/2 发送苹果apns消息推送

由于宝塔面板默认的php编译的curl未加入http2的支持,如果服务需要使用apns推送等需要http2.0的访问就会失败,所以重新编译php让其支持http2.0

编译方法:

一、安装nghttp2

git clone https://github.com/tatsuhiro-t/nghttp2.git
cd nghttp2
autoreconf -i
automake
autoconf
./configure
make
make install
echo '/usr/local/lib' > /etc/ld.so.conf.d/custom-libs.conf
ldconfig

#查看nghttp2版本 测试时安装1.19.0版本顺利通过
nghttpx -V

注意:新版本的nghttp2需要python3.8以上版本
如果系统未安装phthon3.8以上版本的,请先行安装,安装方法如下:

1、下载安装包(以python3.8.8为例)

wget https://www.python.org/ftp/python/3.8.8/Python-3.8.8.tgz
tar -zxvf  Python-3.8.8.tgz

2、编译安装Python

mkdir /usr/local/python3 #创建编译安装目录
cd Python-3.8.3
./configure --prefix=/usr/local/python3
make && make install
3、建立软链接,未完成这一步会找不到python3

#添加python3的软链接 
ln -s /usr/local/python3/bin/python3 /usr/bin/python

二、安装Curl

curl可以通过官网或github下载
github: https://github.com/curl/curl/releases
官网: https://curl.haxx.se/download/curl-7.70.0.tar.gz

wget https://curl.haxx.se/download/curl-7.73.0.tar.gz
tar -zxf curl-7.73.0.tar.gz
cd curl-7.73.0
rm -rf /usr/local/curl
./configure --prefix=/usr/local/curl --enable-ares --without-nss --with-ssl=/usr/local/openssl --with-nghttp2=/usr/local/nghttp2/

#配置时,可以看到nghttp2  enable就说明是已经开启
make
make install

#删除安装包,可选
-> cd ..
-> rm -f curl-7.73.0.tar.gz
-> rm -rf curl-7.73.0

#查看版本是否正确
-> curl -V
curl 7.73.0 (x86_64-pc-linux-gnu) libcurl/7.73.0 OpenSSL/1.0.2k-fips zlib/1.2.7 nghttp2/1.40.0
Release-Date: 2020-10-14
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps mqtt pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: AsynchDNS HTTP2 HTTPS-proxy IPv6 Largefile libz NTLM NTLM_WB SSL UnixSockets
#看到http2是说明安装正常

三、安装完成后在宝塔后台重新编译PHP

编译时最好是选择下自定义模块增加以下参数

--with-curl=/usr/local/bin/curl

在这里插入图片描述

php -r 'phpinfo();' | grep HTTP2
HTTP2 => Yes

大功告成!!!

总结

安装时遇到一个问题就是curl版本跟php版本有对应关系。如果版本不对应,即使curl编译成功,并且也支持http2,但是编译php之后,不生效。具体版本对应关系目前不太清楚。安装中测试了如下关系。
php7.3 => curl 7.73.0 启用成功
php7.4 => curl 7.74.0 启动不生效
php7.0 7.2 7.3 7.4 => curl 7.68.0 7.70.0均不生效。
据此推测应该php7.4 需要更高一些的curl版本才行。有空后期再试试。


http://www.kler.cn/a/421478.html

相关文章:

  • MySQL常见面试题(二)
  • 基于Matlab BP神经网络的电力负荷预测模型研究与实现
  • 遇到问题:hive中的数据库和sparksql 操作的数据库不是同一个。
  • Springboot(四十九)SpringBoot3整合jetcache缓存
  • 状态模式S
  • Vue.js开发基础——指令
  • 基于单片机设计了居家智能音箱系统(论文+源码)
  • Java面试要点50 - List的线程安全实现:CopyOnWriteArrayList
  • @staticmethod、@classmethod
  • 什么是前端构建工具?比如(Vue2的webpack,Vue3的Vite)
  • echarts地图立体效果,echarts地图点击事件,echarts地图自定义自定义tooltip
  • 工程设计行业内外网文件交换解决方案:FileLink助力高效、安全的跨网协作
  • Linux网络编程之---多线程实现并发服务器
  • 【北京迅为】iTOP-4412全能版使用手册-第三十二章 网络通信-TCP套字节
  • 嵌入式蓝桥杯学习1 点亮LED
  • LabVIEW 队列消息处理器设计
  • 云计算介绍_02(虚拟化、虚拟化类型、虚拟化层架构、容器)
  • 鸿蒙多线程开发——Sendable使用注意事项
  • 【docker】docker compose多容器部署
  • Rain后台权限管理系统,快速开发
  • 我的知识图谱和Neo4j数据库的使用
  • AI×5G 市场前瞻及应用现状
  • 深入探索 HarmonyOS 的 Navigation 组件:灵活的页面管理与动态导航
  • win10-Docker打不开this can prevent Docker from starting. Use at your own risk.
  • 【C++】LeetCode:LCR 022. 环形链表 II
  • 数字图像处理(13):图像裁剪