您必须启用 openssl 扩展才能通过 https 下载文件

Posted

技术标签:

【中文标题】您必须启用 openssl 扩展才能通过 https 下载文件【英文标题】:You must enable the openssl extension to download files via https 【发布时间】:2012-12-26 19:14:38 【问题描述】:

我想安装 Zend Framework 2。所以我下载了框架应用程序。正如ZF2手册中提到的,我们必须发出命令

php composer.phar install 

骨架内部。

但是我遇到了一个错误

然后我在我的 wamp 中启用了 ssl_module,我检查了 php_ini 文件,我可以看到以下行

extension=php_openssl.dll

我仍然遇到同样的错误。有人知道我错过了什么吗?

【问题讨论】:

我在运行 travis-ci 时遇到了这个问题,事实证明,与阳光下的每个 linux 发行版不同,一些较旧的 travis-ci 环境是在没有 openssl 的情况下编译的,以防万一其他人遇到同样的问题。 @Kzqai 是否可以在 travis 中编译此扩展,例如 my question 中的 PHP 5.3.3?我从their cookbook 看到可以安装PECL 扩展,但我认为openssl 扩展不能通过PECL 获得。 【参考方案1】:

PHP CLI SAPI 使用的 php.ini 与 CGI 或 Apache 模块不同。

wamp/bin/php/php#.#.##/php.ini 中查找行;extension=php_openssl.dll 并通过从行首删除分号 (;) 取消注释。

【讨论】:

我还必须启用 phar 扩展 (extension=php_phar.dll),如下所述,apache ssl 模块! "PHP CLI SAPI 使用的 php.ini 与 CGI 或 Apache 模块不同。"这就是诀窍! 如果您在php.ini 中找不到该行,只需在其中的动态扩展部分下添加行extension=php_openssl.dll 我正在使用 xampp,Composer 给出相同的打开 ssl 丢失错误,即使在删除 ';' 后也是如此php.ini 中的 openssl 扩展。 如果您使用的是Mac和port,您可以通过port select php php55选择PHP版本并安装扩展port install php55-openssl【参考方案2】:

验证您正在编辑正确的 php.ini 文件。

参考: https://github.com/composer/composer/issues/1440

“WAMP 在 CLI 和 Apache 中使用不同的 php.ini 文件。当您通过 WAMP UI 启用 php_openssl 时,您为 Apache 启用它,而不是为 CLI 启用它。 您需要修改 C:\wamp\bin\php\php-X.Y.Z\php.ini 为 CLI 启用它。”

【讨论】:

谁会想到...真的...这解决了问题。谢谢【参考方案3】:

确保您有正确的扩展文件夹路径

extension_dir = "ext"

默认情况下用 ; 注释人物

【讨论】:

此行已被完全注释掉,现在可以正常工作了 对windows安装很重要! 这条线在哪里?在哪个文件中? php.ini 在 1, C:\wamp64\bin\apache OR 2. C:\wamp64\bin\php\php7.0.0 ?【参考方案4】:

我在玩 Zend Framework 2 和 composer 时也遇到了同样的问题。我正在使用 PHP 5.4(通过 macports 安装),我的解决方案是也通过 macports 为 PHP 5.4 安装 openssl。

sudo 端口安装 php54-openssl

【讨论】:

【参考方案5】:

我遇到过这个问题,但配置 openssl(也适用于 cli)没有帮助。

我更新了作曲家,这解决了我的问题。

只需输入:

$ php composer.phar self-update

$ composer selfupdate

祝你好运!

【讨论】:

【参考方案6】:

我使用 XAMPP。在 C:\xampp\php\php.ini 中,openssl 的入口不存在,所以我在第 989 行添加了“extension=php_openssl.dll”,composer 工作了。

【讨论】:

【参考方案7】:

您需要在两个文件(php 和 apache)中启用“extension=php_openssl.dll”。我的电脑文件路径是这些:

    C:\wamp\bin\php\php5.3.13\php.ini

    C:\wamp\bin\apache\apache2.2.22\bin\php.ini

【讨论】:

这是错误的。使用 phpinfo() 检查使用了哪个 php.ini【参考方案8】:

Uttam,如果您的问题仍未解决,请尝试以下 3 步方法。它对我有用,因为我遇到了完全相同的问题。

第1步:点击wamp托盘图标。

第二步:转到菜单 apache->apache 模块

第三步:点击菜单项“ssl_module”

它会自动重启 wamp。如果 wamp 没有自动重新启动,则通过 wamp 托盘菜单-> 重新启动所有服务重新启动它。重新启动后确认“ssl_module”在菜单 apache->apache modules

下打勾

然后尝试 php composer.phar 安装 通过您共享的响应,php.ini 文件包含 extension=php_openssl.dll 并且 php/ext 目录也有文件“php_openssl.dll”

祝你好运

【讨论】:

【参考方案9】:

瓦莱里的回答帮助了我: https://***.com/a/14265815/492457

WAMP 在 CLI 和 Apache 中使用不同的 php.ini 文件。当你 通过 WAMP UI 启用 php_openssl,您为 Apache 启用它,而不是 对于 CLI。您需要将 C:\wamp\bin\php\php-5.4.3\php.ini 修改为 为 CLI 启用它。

【讨论】:

【参考方案10】:

确保将php.ini 更新为CLI。就我而言,这是C:\wamp\bin\php\php5.4.3\php.ini 并取消注释extension=php_openssl.dll 行。

【讨论】:

【参考方案11】:

迟到的答案,但添加以便其他人可以了解原因。

您还需要在“wamp\bin\php\php-X.Y.Z”位置编辑php.ini文件。

【讨论】:

【参考方案12】:

我必须取消注释 php.ini 文件中的 extension=openssl 才能正常工作!

【讨论】:

【参考方案13】:

如果您使用 wamp,请注意不要使用 wamp ui 来启用 extension=php_openssl.dll

只需转到您的 php 目录,例如:C:\wamp\bin\php\php5.4.12 并编辑 php.ini 并取消注释 extension=php_openssl.dll

它应该可以工作。

【讨论】:

以上是关于您必须启用 openssl 扩展才能通过 https 下载文件的主要内容,如果未能解决你的问题,请参考以下文章

php使用PHPMailer发送邮件

如何动态启用 SOAP、CURL、OPENSSL 扩展?

是否必须在 2018 年 6 月 11 日之前通过信用卡信息启用计费帐户才能继续访问 Google Maps API?

使用PHPMAILER实现PHP发邮件功能

400 未找到项目的计费帐户。必须启用计费才能激活服务

AWS RDS 读取复制错误:“您必须在主数据库实例上启用备份才能设置数据库实例到数据库集群的复制”