Composer PHP包管理器出现OpenSSL错误

时间:2013-08-02 17:21:10

标签: php openssl composer-php

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

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

3 个答案:

答案 0 :(得分:4)

在HTTP服务器内运行的PHP与命令行之间存在差异 - 两种情况都使用自己的配置,因此可能是您的命令行版本未配置SSL扩展。

自己检查:php -i显示命令行上的phpinfo输出。可以看到任何OpenSSL吗?

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

答案 1 :(得分:2)

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

无论如何,我在WAMP上运行PHP并且我已经正确设置了ini文件,但我仍然得到了与你相同的错误。在做了一些研究和大量的修补之后,我注意到在命令行上运行的PHP实际上并没有使用任何ini文件(命令php --ini)。注意到之后,通过使用php -c命令设置ini文件,我使作曲家正常运行。

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

答案 2 :(得分:0)

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