答案是php cli模式未启用openssl扩展且ca证书路径未配置。需用php --ini定位cli的php.ini,取消;extension=php_openssl.dll注释,确认extension_dir正确,再添加openssl.cafile和curl.cainfo指向有效cacert.pem路径,重启终端后重试composer install。

在 Windows 11 上用 Composer 安装 ThinkPHP 8.0 博客项目时,控制台突然中断并报错 “The openssl extension is missing”,接着 vendor/autoload.php 无法生成、项目目录空有骨架却跑不起来——这不是网络问题,也不是 Composer 本身故障,而是 PHP 命令行环境根本没加载 OpenSSL 加密能力。
确认 CLI 模式下 OpenSSL 是否真实启用
打开终端,执行:php --ini,重点看 Loaded Configuration File 这一行路径,它必须指向你手动编辑的那个 php.ini(不是 php.ini-development,也不是 Apache 用的另一个 php.ini)。
运行 php -m | findstr "openssl",如果没有任何输出,说明 CLI 模式下 OpenSSL 扩展压根没加载;哪怕 phpinfo() 页面里显示已启用,对 Composer 安装也完全无效。
注意:WAMP/XAMPP/PhpStudy 等集成环境默认只启用了 Apache 模块下的 openssl,CLI 模式使用的是独立的 php.ini,必须单独配置。
定位并修改正确的 php.ini 文件
根据上一步 php --ini 输出的路径,用记事本或 VS Code 打开那个 php.ini 文件(例如 C:\wamp64\bin\php\php8.2.12\php.ini)。
搜索 php_openssl.dll,找到形如 ;extension=php_openssl.dll 的行,删掉开头的分号,改为 extension=php_openssl.dll。
再搜索 extension_dir,确认其值有效且指向正确扩展目录,例如:extension_dir = "ext"(相对路径)或完整路径如 extension_dir = "C:\wamp64\bin\php\php8.2.12\ext";路径含空格或中文会导致静默失败,务必规避。
保存文件,关闭所有终端窗口——这一步不能跳过,旧终端进程仍会缓存旧配置。
验证并补全 CA 证书路径(关键防错步骤)
方法一:直接测试 HTTPS 调用能力
执行 php -r "echo file_get_contents('https://httpbin.org/get') ?: 'fail';",若报错 Unable to find the wrapper "https" 或 certificate verify failed,说明 openssl 已加载但 CA 证书未配置。
方法二:检查证书路径是否就绪
运行 php -r "print_r(openssl_get_cert_locations());",观察 default_cert_file 值。如果为空、路径不存在,或指向一个过期的 ca-bundle.crt,则需手动指定。
下载最新 CA 包:访问 https://curl.se/ca/cacert.pem,保存为 C:\php\ca-bundle.crt(路径不含中文、空格,建议放在非系统盘根目录)。
在刚才编辑的 php.ini 中追加两行(位置任意,但必须在 [openssl] 段落之外):openssl.cafile=C:\php\ca-bundle.crtcurl.cainfo=C:\php\ca-bundle.crt
这两行缺一不可:前者影响 file_get_contents('https://') 和 OpenSSL 函数,后者专管 cURL 请求;ThinkPHP 8.0 的 composer install 和后续远程资源拉取都依赖它们。
重启验证并执行安装
第一步:彻底关闭所有命令行窗口,重新打开一个新的 PowerShell 或 CMD。
第二步:再次运行 php -m | findstr "openssl",确认有输出;再运行 php -r "echo 'ok';" 测试基础可用性。
第三步:进入目标项目目录,执行:composer create-project topthink/think blog。
第四步:等待终端滚动直至出现 Application key set successfully. 和 Starting Laravel development server... 类似提示(ThinkPHP 8.0 使用内置服务器命令为 php think run),表示安装完成且加密通道已就绪。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











