SSL / TLS保护需要openssl扩展


74
composer create-project flarum/flarum . --stability=beta

我尝试运行此命令,但它给了我这个错误。

  [RuntimeException]                                                           
  The openssl extension is required for SSL/TLS protection but is not availab  
  le. If you can not enable the openssl extension, you can disable this error  
  , at your own risk, by setting the 'disable-tls' option to true.  

我试图将“ extension = php_openssl.dll”添加到“ php.ini”,但是仍然出现此错误


1
我尝试将“ extension = php_openssl.dll”添加到“ php.ini”,但仍然出现此错误
Mike Yang


您的php是手动安装还是从软件包安装?
apex39

Answers:


148

我也发生了同样的错误。我通过关闭Composer的TLS来修复它,虽然不安全,但我承担了开发机器上的风险。

尝试这个:

composer config -g -- disable-tls true

并重新运行您的Composer。它对我有用!

但这是不安全的,不建议您在Server上使用。官方网站说:

如果设置为true,则将尝试使用HTTP尝试所有HTTPS URL,并且不执行网络级加密。启用它是一种安全风险,不建议这样做。更好的方法是在php.ini中启用php_openssl扩展。

如果您不想在机器/服务器中启用不安全层,请设置您的php以启用openssl,它也可以工作。确保已安装PHP Openssl扩展名,并在php.ini文件中启用它。


要启用OpenSSL,请在php.ini文件中添加或查找并取消注释此行:

Linux / OSx:

extension=php_openssl.so

视窗:

extension=php_openssl.dll

并根据需要重新加载您的php-fpm / web服务器!


18
您没有修复它。您只是在隐藏错误。您需要在Wamp服务器的php.ini文件中启用open_ssl模块。Wamp使用2 php.ini文件。一个用于Apache,另一个用于CLI。您需要在第二个php.ini文件中启用open_ssl扩展名,该文件可以在C:\ wamp \ bin \ php \ <phpversion> \ php.ini中找到
Narendran Parivallal 16/04/22

2
是的,我知道,但是由于某些原因,我的公司不允许启用tls,并且用户@thermos评论说打开了open_ssl模块,但无法正常工作。然后,我为这个问题提供解决方案。
维尼修斯·梅德罗斯

1
另外,如果在本地开发计算机上运行它,这真的不安全吗?这将如何影响服务器的安全性?
哈桑

2
完善!天才
bjesua

1
我不明白 如果我在我的开发机器上执行此操作,那会不会也在服务器上被镜像?如果没有,它如何在服务器上工作?
Brainmaniac

20

根据作曲家的参考,有两个相关的选项:disable-tlssecure-http

nano ~/.composer/config.json (如果文件不存在或为空,则仅使用以下内容创建它)

{
    "config": {
        "disable-tls": true,
        "secure-http": false
    }
}

然后它抱怨很多:

You are running Composer with SSL/TLS protection disabled.
Warning: Accessing getcomposer.org over http which is an insecure protocol.

但它执行composer selfupdate(或其他)操作。

而不能在Linux上简单地“在php.ini中启用SSL”;需要使用配置为shared库的openSSL编译PHP ,以便能够从PHP CLI SAPI访问它。


必须使用此方法,因为我无法在php.ini中设置extension_dir =“ ext”(Laragon一直在重写),openssl已在php.ini中启用,由于某种原因,我无法通过命令行设置“ disable-tls” 。谢谢!
Lys777

16

我遇到了完全相同的问题,无法找到解决方案,因此在思考和寻找了一段时间之后,我发现我的PHP.INI显然不在我的PHP扩展的正确目录中,因此我去了:

“可加载扩展(模块)所在的目录。” 并发现以下内容:

; http://php.net/extension-dir
; extension_dir = "./"
; On windows:
;extension_dir = "ext"

并且只需删除; 在“ extension_dir =“ ext”的前面,请注意,这仅适用于Windows,如果运行的是其他操作系统,请删除第一个extension_dir前面的分号。

我不知道为什么我的标记还没有被标记出来,但是如果您遇到问题,那只是要寻找的东西。


3
这为我工作-配合解决取消注释/添加扩展= php_openssl.dll线在php.ini
杰伊萨科Hackleman

14

要启用openssl,请进入php.ini并启用以下行:

extension=php_openssl.dll

如果您不想启用openssl,则可以通过以下命令将composer设置为不使用openssl:

composer config -g -- disable-tls true

但是,这是一个安全问题。


1
要将作曲家配置为在Ubuntu上信任CA,您可以将证书放入/usr/local/share/ca-certificates/,要在Windows上进行操作,则放弃并找到其他工作。
Lauri Elias


10

发生此问题是由于openssl和扩展程序主管导致的,因此取消注释php.ini文件中的扩展名

extension=php_openssl.dll

extension_dir = "ext"

它可以在我的机器上工作。


1

我有同样的问题。我尝试了此页面上列出的所有内容。当我重新安装Composer时,它像以前一样工作。我有一个PHP版本不匹配,已通过新安装进行了纠正,该安装与系统环境变量中安装的PHP路径建立了依赖关系。

我不推荐这种composer config -g -- disable-tls true方法。

顺便说一下,这是逆转的方式composer config -g -- disable-tls false


1

我只是添加它,因为它对我有用,我在开发人员选项激活的情况下安装了作曲家(只需选中安装程序中的复选框)

https://getcomposer.org/Composer-Setup.exe

我认为将新版本的php添加到wamp服务器时可能会出现此问题。如果这样做,则必须检查extension_dir变量是否配置为“ env”。

然后检查phpx.x / ext文件夹中是否存在php_openssl.dll。如果没有php_openssl.dll,则必须在此处下载:http : //www.telecharger-dll.fr/dll-php_openssl.dll.html

如果仍然无法正常运行,请通过运行以下cmd命令来检查您的apache服务器是否使用了良好的php.ini文件:

php --ini

Configuration File (php.ini) Path: C:\Windows
Loaded Configuration File:         C:\wamp64\bin\php\php7.4.7x64\php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed:      (none)

如果加载的配置文件返回(无),则必须检查您的appache / apache2.4.41 / conf / httpd.conf文件是否已使用正确的phpIniDir和正确的模块进行了配置。

一定是这样的:

PHPIniDir "${APACHE_DIR}/bin"
LoadModule php7_module "${INSTALL_DIR}/bin/php/php7.4.7x64/php7apache2_4.dll"

然后重新启动apache并检查我必须喜欢的“ apache / apache2.4.41 / bin / php.ini”(这是PHPIniDir上面的配置)

在此处输入图片说明


1

经过一切尝试后,我终于设法进行了排序。以上建议的解决方案均不适用于我。我的系统是Windows 10 PC。为了进行排序,我不得不更改config.json此处的文件C:\Users\[Your User]\AppData\Roaming\Composer\。在其中,您会发现:

{
    "config": {
        "disable-tls": true},
    "repositories": {
        "packagist": {
            "type": "composer",
            "url": "http://repo.packagist.org" // this needs to change to 'https'
        }
    }
}

您需要在其中更新packagist存储库网址以指向“ https”网址版本。

我知道上面选择的解决方案将在95%的情况下有效,但是正如我所说,这对我而言并不奏效。希望这对某人有帮助。

祝您编码愉快!


0

对于Windows 10上的我来说,这些都不起作用...我已将本地服务器从WAMP更改为Laragon,并且必须在“环境变量”下的php.ini中添加新路径:

控制面板->高级系统设置->环境变量->路径(双击)->浏览...,然后导航到php.ini,然后单击确定。

之后,需要重新启动,现在作曲家的工作就像一个魅力!


0

在此处输入图片说明 您正在禁用SSL / TLS保护的情况下运行Composer。

 composer config --global disable-tls true
 composer config --global disable-tls false
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.