如何更新PHP SSL版本?解决Composer包安装/更新SSL报错问题
我来帮你搞定这两个关联的问题——你的Composer下载报错和PHP SSL版本过低本质是同一个原因,先理清楚根源,再一步步解决:
问题根源
你遇到的报错SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version,核心原因是你的PHP环境依赖的OpenSSL版本太旧,不支持GitHub要求的TLS 1.2+协议。GitHub早在数年前就停止了对TLSv1.0和TLSv1.1的支持,旧版本OpenSSL无法和GitHub建立加密连接,自然没法下载包。而PHP的SSL功能完全依赖系统的OpenSSL库,所以更新PHP的SSL版本,本质就是更新系统的OpenSSL并确保PHP能调用到它。
一、更新PHP的SSL(OpenSSL)版本
根据你的操作系统,操作步骤如下:
1. Debian/Ubuntu 系列
- 先刷新系统包索引:
sudo apt update - 升级OpenSSL到最新可用版本:
sudo apt install --only-upgrade openssl - 验证版本(确保至少是1.0.1g,这个版本开始支持TLS1.2):
openssl version - 最后重启Web服务和PHP-FPM(如果用了的话):
sudo systemctl restart apache2 sudo systemctl restart php-fpm
2. CentOS/RHEL 系列
- CentOS 7及以上直接用yum升级:
sudo yum update openssl - 验证版本:
openssl version - 重启服务:
要是你用的是CentOS 6,默认OpenSSL版本太低,得先启用EPEL源再升级,更建议直接升级系统到CentOS 7+。sudo systemctl restart httpd sudo systemctl restart php-fpm
3. Windows 系统
- 先查看当前PHP用的OpenSSL版本:打开命令提示符,运行
找到php -i | findstr OpenSSLOpenSSL Version那一行。 - 去PHP官方Windows下载页的“Additional extensions”区域,或者OpenSSL官方的Windows预编译页面,下载对应PHP版本的最新OpenSSL DLL文件(一般是
libssl.dll和libcrypto.dll)。 - 替换PHP安装目录下的这两个DLL文件,然后重启你的Web服务器(比如XAMPP/WAMP里的Apache)。
- 再运行一遍
php -i | findstr OpenSSL确认版本更新成功。
4. macOS 系统
- 用Homebrew更新OpenSSL:
brew update brew install openssl - 如果你是通过Homebrew装的PHP,得重新链接PHP到新的OpenSSL:
brew link --force openssl brew reinstall php - 验证PHP的OpenSSL版本:
php -i | grep OpenSSL
二、解决Composer下载报错
当你更新完OpenSSL/PHP SSL版本后,直接重新运行你的Composer命令就行:
composer update
或者安装特定包:
composer require tijsverkoyen/css-to-inline-styles
临时应急方案(仅当无法更新系统OpenSSL时用)
如果因为权限或系统限制没法升级OpenSSL,你可以试试强制Composer跳过严格HTTPS检查(有安全风险,仅临时用):
composer config -g secure-http false
或者手动下载那个包的zip文件(就是报错里的GitHub链接对应的压缩包),放到Composer的缓存目录(一般是~/.composer/cache/files/tijsverkoyen/css-to-inline-styles/),再运行composer update,Composer会优先用缓存的文件。
内容的提问来源于stack exchange,提问作者Samir B
相关产品推荐
相关产品推荐

