当我尝试在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出现此错误。
有人看到我可能忽略的任何问题吗?
答案 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目录。我立即成功了。太麻烦了!很高兴继续前进。