Composer警告:缺少openssl扩展。如何在WAMP中启用?

137
尝试通过Setup InstallerWin7/64 + WampServer 2.2上安装Composer依赖管理工具,但出现以下消息:

openssl扩展缺失,这将会降低Composer的安全性和稳定性。如有可能,请启用它或重新编译php并添加--with-openssl参数。

因此,我做了以下操作...

  1. 从我的Wamp托盘图标中,点击 php > php extensions > php_openssl
  2. 这将通过在扩展旁边放置勾号来显示任务已完成
  3. 然后我重新启动了WampServer
  4. 然后从托盘中的Wamp图标中,我点击了php > php.ini并搜索openssl以验证它没有被注释掉。它没有。
  5. 然后我回到Composer-Setup.exe并再次尝试。 相同的警告消息:“缺少openssl扩展”
  6. 由于从未使用过OpenSSL,我不确定应该设置什么,所以我尝试使用https浏览本地站点之一。失败了。

我错过了什么?

请给予建议。


哇,我刚刚去谷歌搜索以获取更多信息,这篇文章就出现在搜索结果中了。已经有了?该死,速度真快。:-} - sleeper
你重启了Web服务器吗? - periklis
是的,我已经重启了服务器。 - sleeper
不确定您在SSL方面的需求有多广泛,但这可能会对您有所帮助:http://www.phpjoel.com/2011/04/07/installing-ssl-using-openssl-on-a-wamp-localhost/。如果这不能帮助您,您可以在备份数据库和文件后尝试传统的重新安装故障排除方法。 - Cameeob2003
我刚刚将WampServer升级到最新版本。出现了相同的消息。我继续安装了下去。到目前为止,没有明显的错误。很奇怪。 - sleeper
很有可能,甚至非常可能,PHP的CLI版本和Apache版本正在使用不同的php.ini文件。请检查两者的phpinfo输出。 - Charles
13个回答

321

WAMP在CLI和Apache中使用不同的php.ini文件。当你通过WAMP UI启用php_openssl时,你只是为Apache启用它,并没有为CLI启用它。 你需要修改C:\wamp\bin\php\php-5.4.3\php.ini文件以便为CLI启用它。


3
你拯救了我对Laravel的爱...为什么他们不把安装方式像旧版本一样呢,真是该死。 - Tom
1
Laravel把我带到这里。 - tomexsans
1
我正在使用uwamp,我在哪里可以找到ini文件。 - Sujeet Kumar
答案也适用于EasyPHP(右键系统托盘EasyPHP图标,选择配置| PHP,打开Notepad中的php.ini,搜索openssl,取消注释该行)。 - stifin
我该怎么处理xampp?.. 我收到了以下错误信息:无法发送邮件。发件人出错:缺失扩展:openssl - pcs
这个答案指导了正确的操作:在PHP的cli版本中启用openssl,但缺少一个关键点:composer安装程序将使用PHP的cli配置(您可以在高级模式下轻松看到它)。对于一些人来说可能很明显,但对于其他人来说可能不太明显。 - Fabien Haddadi

34
除了像其他人提到的那样取消在php.ini中的;extension=php_openssl.dll行的注释外,您还需要确保;extension_dir = "ext"行也没有注释。要取消注释,请删除前缀分号并保存。
在WAMP和XAMPP等软件包中,该行可能已经被取消注释,但是在Windows的普通PHP下载中没有被取消注释,因此值得验证。另外,您必须通过将其中一个示例(如php.ini-development)复制到新文件中并将其命名为php.ini来创建php.ini文件。然后在那里进行这些更改。
此外,未来安装诸如PHP和Composer等工具时,我建议使用Chocolatey软件包管理器。然后只需简单地执行choco install composer即可。当然,在使用choco方法安装Composer之前,仍需要编辑php.ini文件。在未来的Windows版本中,类似Chocolatey的软件包管理工具将会被集成到Windows中,就像Ubuntu中的apt-get一样。对于开发人员来说,这是激动人心的时代!无论使用命令提示符、Bash(随Git一起安装)还是Powershell,安装完Composer后,请不要忘记重新启动终端以使更新的环境变量生效。

4
如果您正在尝试在Windows 10上安装Composer并已经按照这个指南操作,那么这就是正确的答案。 - robped

16

即使启用了openssl,我仍然遇到了相同的问题。问题在于Composer安装程序正在查看此配置文件:

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

但实际加载的配置文件在这里:

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

因此,我只需取消第一个php.ini文件中的注释即可解决问题。这是WAMP默认安装在我的计算机上的方式。我没有更改任何内容,所以其他人可能也会遇到同样的问题。这与Augie Gardner上面的答案基本相同,但我只是想指出您可能有两个php.ini文件。


安装时默认给出的路径是错误的,指向正确的php.exe解决了问题,谢谢。 - Sandesh Damkondwar

12

在两个地方取消注释;extension=php_openssl.dll

wamp\bin\php\php5.4.12\php.ini
wamp\bin\apache\Apache2.4.4\bin\php.ini

它会起作用


我正在使用xampp。因此,我编辑了两个文件,分别是c/php/php.ini和c/apache/bin/php.ini。在这个;extension=php_openssl.dll中删除了分号。但仍然出现相同的错误,如Mailer Error: Extension missing: openssl。 - pcs
@saina,你重启了服务器吗?同时运行phpinfo()来检查配置文件的位置。 - Ivanka Todorova

5

C:\laravel-master>composer create-project laravel/laravel 正在安装 laravel/laravel (v4.0.6) - 正在安装 laravel/laravel (v4.0.6) [RuntimeException] 您必须启用 openssl 扩展以通过 https 下载文件

我使用的是 EasyPhp (WAMP 类型)。在任务栏中的 EasyPHP 图标上,右键单击并选择配置,然后选择 PHP。它将打开 PHP.ini 文件的配置,您可以在记事本中查找或使用 CTRL+F 查找单词 OPENSSL,您将找到这个 ;extension=php_openssl.dll 只需删除分号和 extension=php_openssl.dll 就可以激活。

C:\laravel-master>composer create-project laravel/laravel 正在安装 laravel/laravel (v4.0.6) - 正在安装 laravel/laravel (v4.0.6) 正在下载: 100% 已在 C:\laravel-master\laravel 中创建项目 正在加载 composer 存储库以获取软件包信息 安装依赖项(包括 require-dev)


我知道这不是正题,但你是如何在EasyPhp中安装composer的?我总是遇到错误,不得不重新安装所有东西。 - HenryW

2

打开wamp/bin/apache/apache2.4.4/bin/php config.. 找到wamp/bin/php/php5.4.16/php conf settings, php-ini production, php-ini dev, phpForApache中的extension=php_openssl.dll,并通过删除;来取消注释。


可能重复:https://dev59.com/q2Yq5IYBdhLWcg3w8lJo - blackmind

2
你需要编辑 "c:\Program Files\wamp\bin\php\php5.3.13\php.ini" 文件 查找: ;extension=php_openssl.dll
删除开头的分号
注意:如果保存文件无效,则需要以管理员身份进行编辑。(在Win7上)转到开始菜单,搜索记事本,在记事本上右键单击,点击“以管理员身份运行”
在composer安装窗口中,只需点击“返回”然后再点击“下一步”,或者关闭它并重新启动,它就应该可以工作了。

1

是的,您必须打开php.ini并删除分号,以便:

;extension=php_openssl.dll

将 ";" 像这样删除,它就会起作用。
extension=php_openssl.dll

愉快的编程。


1

您需要创建一个指向php.ini的符号链接。抱歉俄语链接


1

简单明了,取消注释这行代码:wamp/bin/php/php5.3.13(或任何PHP版本):
;extension=php_openssl.dll(删除;
现在运行Composer的命令行安装。就不会出现错误。
准备好了!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接