yum upgrade PHP version

本文介绍如何在CentOS系统上通过添加额外源的方式升级PHP版本。文章详细解释了使用yum工具进行PHP更新的具体步骤,并提供了相应的命令示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

yum是CentOS系统自带的用于方便地添加/删除/更新RPM包的工具,它能自动解决包的倚赖性问题。
用yum更新PHP,只需用一条命令就可以搞定:
#yum update php
但问题来了,使用此命令后,系统告诉我,没有发现可更新的包。而当前的PHP版本只是5.2.1,PHP官方已经更新到5.2.6了。
经过一番询问,才知道原来CentOS系统的源里PHP仍旧是5.2.1,需要额外的源才能升级PHP。
根据外国网友的介绍,添加了额外的源:

登录SSH后依次运行下列命令:
#rpm --import http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka

#vi /etc/yum.repos.d/utterramblings.repo #

用vi

在打开的文档中加入下面内容:

[utterramblings]
name=Jason's Utter Ramblings Repo
baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka

保存。

再次运行下面的命令就可以完成php的升级了

#yum update php

同理,运行下面命令,升级mysql

#yum update mysql

<think>我们正在解决PHP cURL报错"Peer reports incompatible or unsupported protocol version"的问题。这个错误通常是由于cURL与服务器之间在TLS协议版本协商上出现问题导致的。在PHP中,我们可以通过设置cURL选项来指定使用的TLS版本。 参考引用[1]和[2]中提到的类似错误(虽然是在命令行curl和git clone中出现的),我们可以知道问题本质是TLS协议版本不匹配。因此,在PHP cURL中,我们可以尝试强制使用特定的TLS版本。 解决方案步骤: 1. 确定服务器支持的TLS版本:可以通过在线工具(如SSLLabs)检查目标服务器的TLS支持情况,或者尝试使用不同版本的TLS进行连接。 2. 在PHP cURL中设置CURLOPT_SSLVERSION选项,指定一个明确的TLS版本。 常见的TLS版本常量(具体可用常量取决于PHP和cURL的版本): - CURL_SSLVERSION_TLSv1_0 (TLS 1.0) - CURL_SSLVERSION_TLSv1_1 (TLS 1.1) - CURL_SSLVERSION_TLSv1_2 (TLS 1.2) [推荐,目前最广泛支持] - CURL_SSLVERSION_TLSv1_3 (TLS 1.3) [如果服务器支持,可以使用] 另外,也可以尝试使用CURL_SSLVERSION_MAX_TLSv1_2或CURL_SSLVERSION_MAX_TLSv1_3来指定最大版本,但为了安全起见,建议明确指定一个版本。 示例代码: ```php $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://example.com"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 强制使用TLS 1.2 curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2); $response = curl_exec($ch); if (curl_errno($ch)) { echo 'Error: ' . curl_error($ch); } curl_close($ch); ``` 3. 如果上述方法无效,可能是因为你的PHP环境中的cURL库较旧,不支持所需的TLS版本。此时需要更新系统的cURL和OpenSSL库,并重新编译PHP或更新PHP版本。 4. 另外,也可以尝试设置CURLOPT_SSL_CIPHER_LIST来指定一个合适的密码套件,但通常指定TLS版本已经足够。 5. 如果问题仍然存在,可以尝试关闭SSL验证(仅用于测试,不推荐生产环境使用): ```php curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); ``` 注意:关闭SSL验证会带来安全风险,应仅在测试时使用。 总结:首先尝试指定TLS版本(如TLS1.2),如果不行则考虑更新cURL和OpenSSL库。 引用[1]和[2]中提到的错误与当前问题类似,都是由于协议版本不兼容,因此解决方法也类似。 生成相关问题: 1. 如何查看服务器支持的TLS协议版本? 2. 如何升级CentOS 7上的cURL和OpenSSL? 3. 在PHP中如何安全地使用cURL而不关闭SSL验证?</think>### PHP cURL "Peer reports incompatible or unsupported protocol version" 解决方案 此错误表明 PHP 的 cURL 库与目标服务器在 TLS 协议版本协商时出现兼容性问题。以下是逐步解决方案: #### 1. **强制指定 TLS 版本(推荐)** 在 cURL 选项中明确指定 TLS 版本: ```php $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://example.com"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 强制使用 TLS 1.2(最常用) curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2); // 或尝试 TLS 1.3(如果服务器支持) // curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_3); $response = curl_exec($ch); if(curl_errno($ch)) { echo 'Error: ' . curl_error($ch); } curl_close($ch); ``` #### 2. **更新系统组件** 协议不兼容通常由旧版 OpenSSL/cURL 引起: ```bash # 更新 OpenSSL 和 cURL sudo yum update openssl curl -y # CentOS/RHEL sudo apt-get update && sudo apt-get upgrade openssl libcurl4 -y # Ubuntu/Debian # 重启 Web 服务 sudo systemctl restart apache2 # 或 nginx/php-fpm ``` #### 3. **检查服务器协议支持** 使用在线工具检测目标服务器支持的协议: - [SSL Labs Server Test](https://www.ssllabs.com/ssltest/) - 或命令行检测: ```bash openssl s_client -connect example.com:443 -tls1_2 ``` #### 4. **升级 PHP 的 cURL 模块** 重新编译 PHP 以链接新版 OpenSSL: ```bash # 查看当前 cURL 版本 php -i | grep -E "SSL Version|curl" # 重新编译 PHP(示例) ./configure --with-curl --with-openssl make && sudo make install ``` #### 5. **临时绕过方案(测试环境用)** ```php // 关闭证书验证(仅限测试) curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); ``` ### 根本原因分析 当客户端(PHP cURL)和服务器支持的 TLS 协议版本无交集时触发此错误[^1]。常见场景: - 服务器禁用 TLS 1.0/1.1(老旧客户端无法连接) - PHP 链接的 OpenSSL 版本过旧(如 <1.0.1) - 防火墙干扰协议协商 ### 验证方案 ```php // 检查 cURL 实际使用的协议 curl_setopt($ch, CURLOPT_VERBOSE, true); curl_setopt($ch, CURLOPT_STDERR, fopen('curl.log', 'w+')); ``` 执行后查看 `curl.log` 中的 `SSL connection using TLSv1.x` 记录。 --- ### 相关问题 1. 如何检测远程服务器支持的 TLS 协议版本? 2. 在 Docker 环境中如何解决 cURL 的 TLS 协议不兼容问题? 3. 升级 OpenSSL 后 PHP 未使用新版本怎么办? 4. 如何配置 Nginx/Apache 禁用不安全的 TLS 1.0/1.1 协议? [^1]: 引用[1]:curl: (35) Peer reports incompatible or unsupported protocol version.。这个错误信息表明在使用 curl 命令时遇到了 TLS 协议版本不兼容的问题。 [^2]: 引用[2]:Peer reports incompatible or unsupported protocol version.。在linux系统中克隆项目出现如下报错... 表明该错误在多种网络工具中通用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值