原因是没有开启openssl扩展。
不过,在windows环境下还有一个需要注意的,就是php.ini文件中extension_dir需要修改为绝对路径,
如下:
extension_dir="C:\phpstudy_pro\Extensions\php\php7.4.3nts\ext"
这是因为 node.js V17版本中最近发布的OpenSSL3.0, 而OpenSSL3.0对允许算法和密钥大小增加了严格的限制,可能会对生态系统造成一些影响。故此以前的项目在升级 nodejs 版本后会报错。
修改package.json,在相关构建命令之前加入SET NODE_OPTIONS=--openssl-legacy-provider,然后正常运行npm run serve即可。
"scripts": {
"serve": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",
"build": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build"
},
这是curl访问https协议时出现的错误,解决方法如下,
- 访问bagder/ca-bundle at e9175fec5d0c4d42de24ed6d84a06d504d5e5a09 (github.com)下载crt文件,并保存在准备好的目录中。
- 修改php.ini文件,查找curl.cainfo并修改弃置,curl.cainfo=步骤1中crt文件路径(比如:curl.cainfo=C:\d\source\php\ssl\ca-bundle.crt)
- 重启php服务即可。
pem文件也可以在以下网站下载
curl - Extract CA Certs from Mozilla
如果curl请求是通过php代码发送的,可以添加以下代码禁用ssl验证即可。
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);