配置宝塔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.mzph.cn/diannao/62884.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记录一次网关异常

记一次网关异常 网关时不时就会出现下面的异常。关键是不知道什么时候就会报错,并且有时候就算什么都不操作,也会导致这个异常。 ERROR org.springframework.scheduling.support.TaskUtils$LoggingErrorHandler - Unexpected error occurred in schedul…

Spring Boot开发——整合MyBatis的几种SQL写法

文章目录 1. 批量操作优化• 批量插入• 批量更新• 批量删除2. 动态SQL• 动态查询3. 多条件分支查询• 多条件分支查询4. SQL语句优化• SQL语句优化5. 自动生成主键• 自动生成主键6. 注解方式使用MyBatis• 注解方式示例7. 高级映射• 一对多映射8. MyBatis-Plus集成• MyB…

关于望远镜偏振校准源的一些记录

确定主要的偏振校准模型: 你需要一个最好的源,稳定偏振明确的校准作为主要模型例如:3C286,3C138,3C48 偏振位置角的校准:3C286,3C138,3C48(3C48一般用在6cm及以下的波段使…

解决 Flutter Dio合并请求多个接口,如果一个接口500,那么导致其他请求不在执行

Flutter Dio如何自定义拦截异常 应用场景 我们一般会统一拦截DioExceptionType 如400,403,500 等错误 但有时候,有个地方合并请求多个接口,如果一个接口500,那么导致其他请求不在执行,因为统一拦截了500&…

动态艺术:用Python将文字融入GIF动画

文章内容: 在数字媒体的多样化发展中,GIF动画作为一种流行的表达形式,常被用于广告、社交媒体和娱乐。本文通过一个具体的Python编程示例,展示了如何将文字以动态形式融入到GIF动画中,创造出具有视觉冲击力的动态艺术…

@antv/x6 再vue中 ,自定义图形,画流程图、数据建模、er图等图形

X6 是基于 HTML 和 SVG 的图编辑引擎,提供低成本的定制能力和开箱即用的内置扩展,方便我们快速搭建 DAG 图、ER 图、流程图、血缘图等应用。 最终效果图 1.安装 npm install antv/x6 --save //x6主要包 npm install antv/x6-vue-shape //使用vue组…

【k8s】k8s 中X.509 客户端证书验证机制

Kubernetes 使用 X.509 客户端证书进行身份验证是一种常见的方法。这种机制通过客户端证书来验证用户或应用程序的身份。以下是 Kubernetes 中 X.509 客户端证书验证机制的详细说明: 1. 生成客户端证书 首先,你需要生成客户端证书和私钥。这通常使用 O…

2.4特征预处理(机器学习)

2.4特征预处理 2.4.1 什么是特征预处理 通过 一些转换函数将特征数据转换成更加适合算法模型的特征数据过程。 1 包含内容 数值型数据的无量纲化: 归一化 标准化 2 特征预处理API sklearn.preprocessing 为什么要进行归一化/标准化? 特征的单…

前端、后端、测试?如何选择

目录 一、前端开发 (一)职业概述 (二)需学习的技术 二、后端开发 (一)职业概述 (二)需学习的技术 三、测试 (一)职业概述 (二&#xff0…

AI - 谈谈RAG中的查询分析(2)

AI - 谈谈RAG中的查询分析(2) 大家好,RAG中的查询分析是比较有趣的一个点,内容丰富,并不是一句话能聊的清楚的。今天接着上一篇,继续探讨RAG中的查询分析,并在功能层面和代码层面持续改进。 功…

hadoop环境配置-创建hadoop用户+更新apt+安装SSH+配置Java环境

一、创建hadoop用户(在vm安装的ubantu上打开控制台) 1、sudo useradd -m hadoop -s /bin/bash (创建hadoop用户) 2、sudo passwd hadoop (设置密码) 3、sudo adduser hadoop sudo(将新建的hadoop用户设置为管理员) 执行如下图 将…

大数据新视界 -- Hive 数据湖架构中的角色与应用(上)(25 / 30)

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

SpringMVC:参数传递之日期类型参数传递

环境准备和参数传递请见:SpringMVC参数传递环境准备 日期类型比较特殊,因为对于日期的格式有N多中输入方式,比如: 2088-08-182088/08/1808/18/2088… 针对这么多日期格式,SpringMVC该如何接收,它能很好的处理日期类…

jmeter如何导出中文版的测试报告?

文章目录 0、初始步骤:把报告模板换成中文形式1、首先添加一份聚合报告2、然后点开【聚合报告】3,生成报告3.1 选择【工具】-【generate HTML report】3.2 【generate HTML report】参数详解3.3 、最后点击 【generate report】直接生成。 声明&#xff…

基于IPD双轮驱动, 打破产品同质化竞争魔咒

在当今竞争激烈的商业环境中,产品同质化现象愈发严重,企业面临着巨大的挑战。如何在众多相似产品中脱颖而出,赢得客户的青睐并获取持续的竞争优势,成为企业亟待解决的关键问题。基于 IPD 双轮驱动的产品开发模式,为企业…

2.mysql 中一条更新语句的执行流程是怎样的呢?

前面我们系统了解了一个查询语句的执行流程,并介绍了执行过程中涉及的处理模块。 相信你还记得,一条查询语句的执行过程一般是经过连接器、分析器、优化器、执行器等功能模块,最后到达存储引擎。 那么,一条更新语句的执行流程又…

es索引导致的数据导入缓慢问题

我是es小白中的小白,遇到个问题也不知道为啥,反正是解决了,各位路过的大哥,有知道原因的还望留言指教,在此感谢! 我先讲一下这个问题的背景,我们线上有一套es,版本是7&…

【LeetCode每日一题】——204.计数质数

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时空频度】九【代码实现】十【提交结果】 一【题目类别】 数组 二【题目难度】 中等 三【题目编号】 204.计数质数 四【题目描述】 给定整数 n &…

【计算机网络】细说IP

文章目录 概述IP地址的组成IP地址的分类IP地址的作用 分类一、A类IP地址二、B类IP地址三、C类IP地址四、D类IP地址五、E类IP地址 协议报文子网掩码一、定义与功能二、表示方法三、子网掩码与IP地址的关系四、子网掩码的设置与配置五、实例说明 IPv6一、定义与背景二、地址格式与…

tar.gz压缩包校验是否损坏

1. 使用 tar 命令检查 tar 命令有一个 -t 选项,可以用来列出压缩包中的内容,并在过程中检查文件是否损坏。如果压缩包损坏,tar 会报错。 命令:tar -tzf filename.tar.gz-t:列出压缩包中的内容。-z:表示压…