SSL/TLS保护需要openssl扩展

Yan*_*ang 55 php composer-php

composer create-project flarum/flarum . --stability=beta
Run Code Online (Sandbox Code Playgroud)

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

  [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.  
Run Code Online (Sandbox Code Playgroud)

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

Vin*_*ros 112

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

试试这个:

composer config -g -- disable-tls true
Run Code Online (Sandbox Code Playgroud)

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

但它不安全,不推荐用于您的服务器.官方网站说:

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

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


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

Linux的/ OSX:

extension=php_openssl.so
Run Code Online (Sandbox Code Playgroud)

视窗:

extension=php_openssl.dll
Run Code Online (Sandbox Code Playgroud)

如果需要,重新加载你的php-fpm/web-server!

  • 你没有修理它.你只是隐藏错误.您需要在Wamp服务器的php.ini文件中启用open_ssl模块.Wamp使用2个php.ini文件.一个用于Apache,另一个用于CLI.你需要在第二个php.ini文件中启用open_ssl扩展,你可以在C:\ wamp\bin\php\<phpversion>\php.ini找到它 (14认同)
  • 是的,我知道,但由于某些原因,我的公司不允许启用tls,并且用户@thermos评论说打开open_ssl模块而不能正常工作.然后我给出了这个问题的解决方案. (2认同)
  • 完美的!天才 (2认同)

Vru*_*aut 17

出现此问题是由于 openssl 和扩展目录,因此取消php.ini文件中的扩展名下方的注释

extension=php_openssl.dll

extension_dir = "ext"

它在我的机器上工作。

  • 谢谢,这也适用于我的设置环境 (4认同)
  • 在尝试了许多其他解决方案之后,它也对我有用。我不明白为什么没有人提到取消注释 extension_dir = "ext" 行 (3认同)

Mar*_*ler 14

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

nano ~/.composer/config.json ...

{
    "config": {
        "disable-tls": true,
        "secure-http": false
    }
}
Run Code Online (Sandbox Code Playgroud)

然后它抱怨很多:

You are running Composer with SSL/TLS protection disabled.
Warning: Accessing getcomposer.org over http which is an insecure protocol.
Run Code Online (Sandbox Code Playgroud)

但它执行composer selfupdate(或其他).

虽然不能简单地在Linux上"在php.ini中启用SSL"; PHP需要使用配置为shared库的openSSL进行编译- 以便能够从PHP CLI SAPI访问它.


Cla*_*Luz 11

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

extension=php_openssl.dll
Run Code Online (Sandbox Code Playgroud)

如果你不想启用openssl你可以设置为composer不使用openssl与此命令:

composer config -g -- disable-tls true
Run Code Online (Sandbox Code Playgroud)

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

  • 要在 Ubuntu 上配置 Composer 以信任 CA,您需要将证书放入 `/usr/local/share/ca-certificates/` 中,如果在 Windows 上执行此操作,您就放弃并找到另一份工作。 (3认同)

Nic*_*ntq 7

我有完全相同的问题,无法找到解决方案,所以在思考并寻找一段时间后,我认为我的PHP.INI显然没有查找我的PHP扩展的正确目录,所以我去了:

"可加载扩展(模块)所在的目录." 并找到以下内容:

; http://php.net/extension-dir
; extension_dir = "./"
; On windows:
;extension_dir = "ext"
Run Code Online (Sandbox Code Playgroud)

并简单地删除; 在"extension_dir ="ext"的前面,请注意这仅适用于Windows,如果您运行的是其他操作系统,请删除第一个extension_dir前面的分号.

我不知道为什么我的没有标记,但如果你遇到问题,它只是寻找的东西.

  • 这对我有用 - 与在php.ini中取消注释/添加extension = php_openssl.dll行的解决方案相配合 (2认同)

小智 7

经过尝试一切之后,我终于成功解决了这个问题。上述建议的解决方案都不适合我。我的系统是 PC Windows 10。为了解决这个问题,我必须更改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'
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

您需要更新 packagist repo url 以指向“https”url 版本。

我知道上面选择的解决方案适用于 95% 的情况,但正如我所说,这对我不起作用。希望这对某人有帮助。

快乐编码!


小智 6

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

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

顺便说一句,扭转这个局面的方法是composer config -g -- disable-tls false