【问题标题】:OpenSSL error with Composer PHP package managerComposer PHP 包管理器的 OpenSSL 错误
【发布时间】:2023-04-07 04:02:01
【问题描述】:

当我尝试在 CLI 中运行 composer install 时,我收到此错误:

You must enable the openssl extension to download files via https

问题似乎出在我的composer.phar 文件的第 5381 行:

if (!extension_loaded('openssl') && (0 === strpos($url, 'https:') || 0 === strpos($url, 'http://github.com'))) {
    throw new \RuntimeException('You must enable the openssl extension to download files via https');
}

我在两个 php.ini 文件中都启用了 openssl 扩展。 (Apache 和 PHP)

如果我在 CLI 中运行 openssl version,它会返回

OpenSSL 1.0.1c 10 May 2012

我通过我的 WAMP 服务器运行了以下 PHP 脚本:

echo extension_loaded('openssl');

它打印了1

据我所知,我的 openssl 扩展工作正常,但由于某种原因,它仍然会导致 Composer 出现此错误。

有没有人发现我可能忽略的任何问题?

【问题讨论】:

标签: php openssl composer-php


【解决方案1】:

在 HTTP 服务器中运行的 PHP 和在命令行上运行的 PHP 是不同的 - 两种情况都使用自己的配置,因此可能是您的命令行版本没有配置 SSL 扩展。

自己检查一下:php -i 在命令行上显示 phpinfo 输出。有什么 OpenSSL 可以看吗?

当您使用它时,使用相同的输出,找到正在使用 php.ini 的信息,然后添加 OpenSSL 扩展。

【讨论】:

  • 我照你说的做了。在我提到我已启用它的php.ini 文件之一中禁用了 Openssl。我像以前一样认真检查了 5 次......与往常一样,我可能只是做了一些愚蠢的事情。无论如何,即使正确的答案应该是Don't be an idiot,我也会接受你的。 ;-)
【解决方案2】:

由于您没有提供很多信息,我只是假设您的系统设置(Windows XP、WAMP)与我的相似。原则上,这个答案应该适用于 Unix,但我无法检查它。

无论如何,我在 WAMP 上运行了 PHP,并且我已经正确设置了 ini 文件,但我仍然遇到了和你一样的错误。经过一些研究和大量修改后,我注意到在命令行上运行的 PHP 实际上并没有使用任何 ini 文件(命令php --ini)。注意到这一点后,我通过使用php -c 命令设置ini文件让composer正常运行。

长话短说,试试这个命令php -c /path/to/ini/file composer install,看看它是否有效。

【讨论】:

    【解决方案3】:

    这是我在安装 Composer 时解决问题的方法。我已将 php 文件保存到 c:\php。在 php.ini 文件中,我通过删除分号打开了扩展名 =php_openssl.dll,但没有成功。我在名为 ext 的子目录中找到了扩展 openssl.dll 。我将它复制到 c:\php 目录。我遇到了立竿见影的成功。多么麻烦!很高兴继续前进。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-29
      • 1970-01-01
      • 2019-12-28
      • 2019-12-07
      • 2019-01-04
      • 2018-03-24
      • 2011-02-26
      • 2014-06-23
      相关资源
      最近更新 更多