您需要启用openssl扩展以通过https下载文件。

127

我想安装Zend Framework 2,所以我下载了骨架应用程序。正如ZF2手册中提到的那样,我们必须发出以下命令:

php composer.phar install 

骨架内部。

但我收到一个错误。

您必须启用openssl扩展以通过https下载文件。

然后我在我的wamp中启用了ssl_module,检查了php_ini文件,我可以看到以下行:

extension=php_openssl.dll

仍然出现相同的错误。有人知道我错过了什么吗?


1
我在运行travis-ci时遇到了这个问题,结果发现与太阳下的每个Linux发行版不同,一些旧的travis-ci环境是没有编译openssl的,以防其他人遇到同样的问题。 - Kzqai
@Kzqai,能否在travis中编译此扩展,例如针对PHP 5.3.3在我的问题中?我从他们的食谱中看到可以安装PECL扩展,但我不认为openssl扩展可通过PECL获得。 - Jeff Puckett
14个回答

291

PHP CLI SAPI使用的是与CGI或Apache模块不同的php.ini文件。

wamp/bin/php/php#.#.##/php.ini中查找;extension=php_openssl.dll这一行,并通过删除行开头的分号(;)来取消注释。


我还必须启用phar扩展(extension=php_phar.dll),并像下面所说的那样,启用apache ssl模块! - Diego Favero
1
"PHP CLI SAPI使用的php.ini与CGI或Apache模块不同。这就是诀窍!" - George D.
如果在您的 php.ini 文件中找不到该行,只需在其动态扩展部分下添加以下行:extension=php_openssl.dll - totymedli
如何在像Godaddy这样的共享主机中编辑此设置 - Abhijit Kumbhar
尝试按照此处描述的步骤在您的根文件夹中创建php.ini:https://dev59.com/questions/RGQo5IYBdhLWcg3wVuGP - BorisS
显示剩余2条评论

36

确认您正在编辑正确的php.ini文件。

参考: https://github.com/composer/composer/issues/1440

"WAMP在CLI和Apache中使用不同的php.ini文件。当您通过WAMP UI启用php_openssl时,您只为Apache启用,而不是为CLI启用。 您需要修改C:\ wamp \ bin \ php \ php-X.Y.Z \ php.ini以启用它的CLI。"


2
谁会想到...真的...这解决了问题。谢谢。 - Ruwantha

26

确保您拥有正确的扩展文件夹路径

extension_dir = "ext" (默认情况下,此行用分号注释)


1
这一行被完全注释掉了,现在它可以工作了。 - im_brian_d
重要提示:适用于 Windows 安装! - haakym
这行代码在哪里?在哪个文件中?是在1. C:\wamp64\bin\apache 还是2. C:\wamp64\bin\php\php7.0.0 中的 php.ini 文件中? - MyDaftQuestions
这个帮了我省下了好几个小时的烦恼,SSL已经取消注释了,但是这个扩展没有。谢谢你!!!!!! - Kipruto

11

在使用Zend Framework 2和composer进行实验时,我也遇到了相同的问题。我正在使用通过MacPorts安装的PHP 5.4,并且我的解决方案是同样通过MacPorts安装PHP 5.4的openssl。

sudo port install php54-openssl

6

我曾经遇到过这个问题,但是配置openssl(包括cli版本)并没有帮助。

我更新了composer,问题得到了解决。

只需要输入:

$ php composer.phar self-update

或者

$ composer selfupdate

祝您好运!


5

我使用的是 XAMPP。在 C:\xampp\php\php.ini 文件中,没有 openssl 的相关设置,所以我在第 989 行加入了 "extension=php_openssl.dll",这样 composer 就能正常工作了。


4

您需要在两个文件(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


这是错误的。请使用phpinfo()检查使用了哪个php.ini文件。 - ThaDafinser

3
如果您的问题还未解决,请尝试以下三个步骤。这对我很有用,因为我遇到了完全相同的问题。
步骤1:点击wamp托盘图标。
步骤2:进入菜单“apache->apache modules”。
步骤3:点击菜单项“ssl_module”。
它会自动重新启动wamp。如果wamp没有自动重启,请通过wamp托盘菜单->重新启动所有服务进行重启。重启后确认在菜单“apache->apache modules”下,“ssl_module”被勾选。
之后只需尝试执行php composer.phar install。根据您分享的响应,php.ini文件包含extension=php_openssl.dll,而php/ext目录下也有文件“php_openssl.dll”。
祝好运!

3

Valery的回答对我很有帮助: https://dev59.com/q2Yq5IYBdhLWcg3w8lJo#14265815

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


2

确保您更新CLIphp.ini。对于我的情况,这是C:\wamp\bin\php\php5.4.3\php.ini,并取消注释extension=php_openssl.dll行。


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