PHP composer 报错 certificate verify failed

1. 问题描述

在使用PHP Composer安装扩展时,可能会遇到报错certificate verify failed,这是因为PHP默认使用了SSL证书验证,但是服务器缺少SSL证书。本文将详细介绍如何解决此问题。

2. 问题原因

在使用Composer安装扩展时,可能会遇到以下错误提示:

[Composer\Downloader\TransportException]

The "https://packagist.org/packages.json" file could not be downloaded: SSL operation failed with code 1. OpenSSL Error messages:

error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed

Failed to enable crypto

failed to open stream: operation failed

以上错误提示表明Composer无法下载https://packagist.org/packages.json文件,导致安装失败。这是因为Composer默认启用了SSL验证,但是服务器缺少SSL证书,导致无法建立SSL连接,从而出现错误。

3. 解决方法

解决该问题的方法有多种,以下为常用且简单易行的三种方法。

3.1 使用HTTP协议

在使用Composer安装扩展时,可以将使用的协议修改为HTTP协议,即在命令中添加--no-secure-http选项,如下所示:

composer install --no-secure-http

此时Composer将使用HTTP协议下载扩展,不再进行SSL验证。

3.2 禁用SSL验证

另一种解决方法是禁用SSL验证,即在PHP配置文件php.ini中添加如下配置:

[openssl]

openssl.cafile=/etc/ssl/certs/ca-certificates.crt

openssl.verify_peer=0

其中openssl.verify_peer=0表示禁用SSL验证,openssl.cafile表示证书文件路径。需要注意的是,不同系统中证书文件的路径可能不同,需要根据实际情况修改。

3.3 更新SSL证书

还有一种解决方法是更新SSL证书,即将缺少的证书文件下载并放置到正确的路径下。

以Ubuntu系统为例,可以通过以下命令下载证书文件:

sudo apt-get install ca-certificates

在其他系统中,可以通过搜索引擎查找具体操作方法。

4. 总结

在使用Composer安装扩展时,可能会遇到certificate verify failed的报错,这是因为服务器缺少SSL证书。为解决此问题可以采用以下方法之一:使用HTTP协议、禁用SSL验证、更新SSL证书。如果以上方法都无法解决问题,可以考虑联系扩展作者或服务器管理者寻求更高级的解决方法。