先确认openssl扩展是否真在php cli中加载:运行php --ini查实际php.ini路径,编辑该文件确保extension=openssl(windows为php_openssl.dll)已启用、extension_dir正确,重启终端后执行php -m | grep openssl验证。

php -m 看不到 openssl 就别急着装 Composer
根本不用管 Composer 报什么错,先确认 openssl 扩展是否真在 PHP CLI 里加载了。很多人改了 php.ini 却没生效,是因为改错了文件——php --ini 输出的才是当前 CLI 实际读的配置路径,不是你双击打开的那个。
- 运行
php --ini,记下 “Loaded Configuration File” 后面的完整路径 - 用文本编辑器打开它,搜索
extension=openssl(Windows 下可能是extension=php_openssl.dll),确保前面没有分号 - 检查
extension_dir是否指向正确的扩展目录,比如extension_dir="C:\php\ext"或extension_dir="/usr/lib/php/20220829" - 保存后,终端重启(不是仅关掉窗口,要新开一个 cmd / Terminal),再跑
php -m | grep openssl(Linux/macOS)或php -m | findstr openssl(Windows)
PHP 是自己编译的?--with-openssl 必须显式带上
如果你用 phpbrew、asdf 或源码编译 PHP,openssl 不是默认启用的。漏掉 --with-openssl 参数,哪怕系统装了 OpenSSL 库,PHP 也编译不出这个扩展。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 查当前 PHP 编译参数:运行
php -i | grep "Configure Command",看输出里有没有--with-openssl - 如果没有,重编译时必须加:
./configure --with-openssl=/usr --with-curl --enable-mbstring ...(路径按你系统 OpenSSL 开发包位置调整) - Alpine Linux 用户注意:
apk add openssl-dev php7-openssl缺一不可,光装php7-openssl不装openssl-dev会导致扩展加载失败
openssl 扩展开了,但 Composer 还报 SSL 错误?证书路径可能没配
openssl 扩展存在 ≠ HTTPS 能正常工作。PHP 需要知道 CA 根证书在哪,否则连 https://packagist.org 都打不开。
- 运行
php -r "print_r(openssl_get_cert_locations());",看default_cert_file指向哪 - 如果路径不存在或为空,去 https://www.php.cn/link/5fe4dadcdb001d8566cd20e6d8a20251 下载最新
cacert.pem,存到本地(如/usr/local/etc/openssl/cacert.pem) - 在
php.ini里加上两行:curl.cainfo = "/usr/local/etc/openssl/cacert.pem"和openssl.cafile = "/usr/local/etc/openssl/cacert.pem" - 别信“临时关 TLS”的方案:
composer config -g --disable-tls true只能绕过验证,不能解决根本问题,且 Packagist 已强制要求 HTTPS
Windows 下 dll 依赖缺失:ssleay32.dll 和 libeay32.dll 很关键
Windows PHP 的 php_openssl.dll 不是独立模块,它依赖 OpenSSL 的两个核心 DLL。缺任何一个,扩展加载会静默失败——php -m 里看不到 openssl,但也不报错。
- 确认 PHP 安装目录下
ext\php_openssl.dll存在 - 检查同级目录(PHP 根目录)是否有
ssleay32.dll和libeay32.dll(PHP 7.x)或libssl-1_1.dll、libcrypto-1_1.dll(PHP 8.x) - 如果缺失,从官方 PHP Windows ZIP 包里复制过来,或者把它们所在路径加进系统
PATH环境变量 - 别往
C:\Windows\System32里扔——这属于过时做法,容易引发版本冲突,优先放 PHP 目录下并确保PATH包含该路径
php.ini 文件不一致,以及 OpenSSL 依赖 DLL 的路径未被系统识别。这两点不验证清楚,改再多配置也没用。php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










