Composer PHP包管理器出现OpenSSL错误


OpenSSL error with Composer PHP package manager

当我尝试在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出现此错误。

有人看到我可能忽略的问题吗?

在HTTP服务器内运行的PHP和在命令行上运行的PHP有区别——这两种情况都使用自己的配置,所以可能是您的命令行版本没有配置SSL扩展。

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

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

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

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

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

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