如何启用PHP的openssl扩展以安装Composer?

118

我正在尝试在WAMP环境中安装Laravel,但出现了一个警告信息,提示openssl未启用,而我已经在WAMP中启用了它。

以下是消息的截图。

输入图像描述


1
检查环境变量%PATH%中PHP的路径,或许Composer正在寻找其他位置的PHP而非WampServer。 - Rubens Mariuzzo
19个回答

128

可能 WAMP 和 Composer 使用不同的 PHP 安装。Composer 将使用在 PATH 环境变量中设置的 PHP。

如果您想启用 openssl 扩展来安装 Composer,首先需要检查 PHP 安装的位置。

  1. 打开命令提示符,键入: echo %PATH%,然后检查您的 PHP 安装位置。
  2. 转到该位置并编辑名为: php.ini 的文件。
  3. 取消注释 extension=php_openssl.dll 行,删除开头的分号。

现在可以安装 Composer 了。


2
发生了这种情况,我的XAMPP安装中没有这个扩展。我只需在php.ini中添加(extension=php_openssl.dll),就可以下载Laravel依赖项了。 - Adrian P.
8
当我输入 echo %PATH% 后,输出的结果是:C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\Sysem32\WindowsPowerShell\v1.0\;C:\Program files\Microsoft\Web Platform Installer\;C:\Program Files\MySQL\MySQL Server 5.5\bin。在这些目录中都没有安装任何PHP,请问该怎么办? - abbood
19
WAMP正在使用此php.ini文件:c:\wamp\bin\apache\Apache2.4.4\bin\php.ini,但Composer正在使用CLI中的PHP,因此它正在读取此文件:c:\wamp\bin\php\php5.4.12\php.ini(因此您需要在那里启用openssl)。 - Enrique
2
我正在使用xampp,即使在php.ini中删除openssl扩展的';'后,Composer仍然会出现相同的open ssl缺失错误。 - Shashikumar Misal
太棒了!简洁明了的回答……第一次就解决了。 - Zabs
35
为了使用纯PHP安装而非WAMP,我还需要在php.ini中取消注释extension_dir = "ext"这一行。 - David Harkness

63

我遇到了同样的问题,这是我找到的解决方案,在您的php.ini文件中需要做一些更改:

  1. extension_dir = "ext"
  2. extension = php_openssl.dll

这里的每个人都在讨论openssl扩展,但在Windows中,您也需要激活扩展目录。


5
你是唯一提到extension_dir的人,你太棒了! - giannis christofakis
这对我有用。我直接像这个教程中所示下载了PHP。 - robped

62
我以不同的方式解决了我的问题。问题在于wamp的GUI误导了我:它声称我已经启用了php_openssl,并且如果我在同一GUI上点击php.ini,它实际上显示extension=php_openssl.dll取消注释。
我不确定我是否使用了OP相同的composer安装程序版本,但它实际上会在开始时要求您指定要应用composer的php.exe(这基本上确保没有人尝试将composer应用于错误的php可执行文件,就像OP所遇到的问题)。
我解决这个问题的方法是进入wamp包内的php安装中:C:\wamp\bin\php\php5.4.12,在那里查找php.in..当我打开它时,我震惊地发现extension=php_openssl.dll这行实际上被注释了!我取消注释后它就可以正常工作了。

在查看了这个答案后,我发现WAMP正在使用5.5.12版本,但我选择了5.4目录下的php.exe文件。谢谢! - Afnan Bashir
libeay32.dllliblibcrypto-*.dll文件位于哪个路径?http://php.net/manual/de/openssl.installation.php - Bernhard Döbler

27
对于WAMP服务器,“Enrique”提供的评论解决了我的问题。 wamp正在使用这个php.ini文件:
c:\wamp\bin\apache\Apache2.4.4\bin\php.ini

但是Composer是使用CLI的PHP,因此它正在读取这个文件:

c:\wamp\bin\php\php5.4.12\php.ini (so you need to enable openssl there)

对于Composer,您将需要在扩展中启用该组件

c:\wamp\bin\php\php5.4.12\php.ini

变更:

;extension=php_openssl.dll 

extension=php_openssl.dll

对于MAMP,我不得不将php.ini文件从C:\MAMP\conf\phpx.x.x复制到C:\MAMP\bin\php\phpx.x.x(\conf....到\bin...) - Mike

22
如果您在Windows上没有使用WAMP堆栈,则可以按照以下步骤进行操作。
  1. Download an installation of PHP for Windows. Generally you'll want a non-thread safe install. You can use 32-bit or 64-bit builds
  2. Extract the zip file somewhere. I would suggest C:\php. Composer's installer found it there without any additional prompting
  3. The latest versions of PHP for Windows do not come with a php.ini by default. Instead, you'll see two files, as noted below. Rename one to php.ini or copy it into php.ini.
    • php.ini-development
    • php.ini-production
  4. Open your php.ini file and remove the semicolon from this line (you might want to uncomment other things as well but this line is the only one necessary for Composer)

    ;extension=php_openssl.dll
    

这应该是您需要做的全部。Composer安装程序应该会完成您从这里需要的所有其他操作。


3
这是唯一一个在线提供正确解决方案(非WAMP配置)的地方。谢谢! - adamdehaven
2
对于使用较新版本 PHP 的人:现在此行为 ;extension=openssl - Vern Jensen

11

这是一个老问题,但我刚刚遇到了相同的问题(使用 PHP7),最终解决方案非常简单。根据其他答案取消注释php.ini中的行并不够。我需要将其更改为:

;extension=php_openssl.dll
to:
extension=ext/php_openssl.dll

注意ext前缀。该dll文件已经存在,但是它在一个子文件夹中。更改配置后,Composer安装程序顺利完成。


11

您需要在两个文件(php和apache)中启用“ extension=php_openssl.dll”。 我的电脑文件路径如下:

  1. C:\wamp\bin\php\php5.3.13\php.ini
  2. C:\wamp\bin\apache\apache2.2.22\bin\php.ini

7

您需要在服务器上启用 OpenSSL 扩展。

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

这是PHP配置文件,它的类型是“配置设置”,带有一个驱动器-类似于记事本的图标。
  1. open it either with notepad or any editor,
  2. search for openssl "your ctrl + F " would do.
  3. there is a semi-colon before the openssl extension

    ;extension=php_openssl.dll
    

    remove the semi-colon and you'll have

    extension=php_openssl.dll
    
  4. save the file and restart your WAMP server after that you're good to go. re-install the application again that should work.

6

有两个php.ini文件,一个用于开发,另一个用于生产。不要动它们,还有一个带有齿轮图标可编辑的php.ini文件,其中包含配置设置。


1
另外,我的没有默认值。只需复制/粘贴prod/dev文件并将其重命名为php.ini,然后进行其他人在此处建议的编辑即可。 - Brynn Bateman

5
在编辑“正确”的文件(所有php.ini文件)后,我仍然有问题。我的解决方案是:
  1. 添加一个系统变量:OPENSSL_CONF

    OPENSSL_CONF的值应该是您当前PHP版本的openssl.cnf文件。

对于我来说,它是:

  • C:\wamp\bin\php\php5.6.12\extras\ssl\openssl.cnf

-> 重新启动WAMP -> 现在应该可以工作了

来源:http://php.net/manual/en/openssl.installation.php


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