【问题标题】:The openssl extension is required for SSL/TLS protectionSSL/TLS 保护需要 openssl 扩展
【发布时间】:2016-05-16 22:24:30
【问题描述】:
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”,但仍然出现此错误

【问题讨论】:

标签: php composer-php


【解决方案1】:

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

试试这个:

composer config -g -- disable-tls true

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

但它不安全并且不推荐用于您的服务器。官网说:

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

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


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

Linux/OSx:

extension=php_openssl.so

Windows:

extension=php_openssl.dll

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

更新:

从 PHP 7.4 开始,该扩展名为 extension=openssl(适用于 Windows)。

【讨论】:

  • 你没有修复它。你只是在隐藏错误。您需要在 Wamp 服务器的 php.ini 文件中启用 open_ssl 模块。 Wamp 使用 2 个 php.ini 文件。一个用于 Apache,另一个用于 CLI。您需要在第二个 php.ini 文件中启用 open_ssl 扩展,该文件位于 C:\wamp\bin\php\\php.ini
  • 是的,我知道,但是由于某些原因,我的公司不允许启用 tls,并且用户 @thermos 评论说打开 open_ssl 模块并且不起作用。然后我给出这个问题的解决方案。
  • 另外,如果你在本地开发机器上运行它真的不安全吗?这将如何影响服务器的安全性?
  • @Hassan,禁用 tls 你假设所有 HTTPS 都是 HTTP,如果你有公共存储库,它不是不安全但不推荐,但在服务器中建议你在 php.ini 中启用 open_ssl 模块。我改进了我的答案。
  • 我不明白。如果我在我的开发机器上这样做,那不会也被镜像到服务器上吗?如果不是,它如何在服务器上工作?
【解决方案2】:

根据作曲家reference 的说法,有两个相关选项: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”; PHP 需要使用配置为 shared 库的 openSSL 进行编译 - 以便能够从 PHP CLI SAPI 访问它。

【讨论】:

  • 不得不使用这种方法,因为我无法在 php.ini 中设置 extension_dir = "ext"(Laragon 不断重写),openssl 已经在 php.ini 中启用,我无法设置 "disable- tls”由于某种原因通过命令行。谢谢!
【解决方案3】:

我遇到了完全相同的问题并且找不到解决方案,所以经过思考和寻找一段时间后,我发现我的 PHP.INI 显然没有在我的 PHP 扩展的正确目录中查找,所以我去了:

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

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

然后简单地删除了 ; "extension_dir = "ext" 前面,注意这仅适用于 Windows,如果您运行的是不同的操作系统,请删除第一个 extension_dir 前面的分号。

我不知道为什么我的还没有被标记,但如果你有问题,这只是要寻找的东西。

【讨论】:

  • 这对我有用 - 与在 php.ini 中取消注释/添加 extension=php_openssl.dll 行的解决方案相结合
  • 这对我也有用,但我运行的是 PHP 8.0; php.ini 有 extension=openssl 而不是 extension=php_openssl.dll
【解决方案4】:

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

extension=php_openssl.dll

如果你不想启用openssl,你可以设置作曲家不使用这个命令使用openssl:

composer config -g -- disable-tls true

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

【讨论】:

  • 要在 Ubuntu 上配置 composer 以信任 CA,您将证书放入 /usr/local/share/ca-certificates/,在 Windows 上执行此操作您放弃并找到另一份工作。
【解决方案5】:

这个问题是由于 openssl 和扩展目录造成的,所以在 php.ini 文件中的扩展下面取消注释

extension=php_openssl.dll

extension_dir = "ext"

它在我的机器上工作。

【讨论】:

  • 谢谢,这也适用于我的设置环境
【解决方案6】:

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

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

顺便说一句,扭转这种情况的方法是composer config -g -- disable-tls false

【讨论】:

    【解决方案7】:

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

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

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

    【讨论】:

      【解决方案8】:

      我只是添加它,因为它对我有用,我安装 composer 并激活开发人员选项(只需选中安装程序中的框)

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

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

      然后检查 php_openssl.dll 是否存在于您的 phpx.x/ext 文件夹中。如果没有 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)
      

      如果加载的配置文件返回 (none),你必须检查你的 appache/apache2.4.41/conf/httpd.conf 文件是否配置了正确的 phpIniDir 和正确的模块。 p>

      一定是这样的:

      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 上面配置的那个)它一定是我喜欢的

      【讨论】:

        【解决方案9】:

        在尝试了一切之后,我终于设法解决了这个问题。以上建议的解决方案都不适合我。我的系统是一台 PC Windows 10。为了进行排序,我必须更改位于此处 C:\Users\[Your User]\AppData\Roaming\Composer\config.json 文件。在那里,你会发现:

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

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

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

        编码愉快!

        【讨论】:

          【解决方案10】:

          您在禁用 SSL/TLS 保护的情况下运行 Composer。

           composer config --global disable-tls true
           composer config --global disable-tls false
          

          【讨论】:

            【解决方案11】:

            尝试安装 Magento 时,我在新的家庭服务器上的 IIS 上遇到了这个问题。为了修复它,我在我的 php.ini 中添加了上述内容:extension=php_openssl.dll,然后在 Windows 10 Pro 上重新启动了我的 IIS 服务器。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2015-12-19
              • 2015-07-18
              • 2019-06-27
              • 2022-01-16
              相关资源
              最近更新 更多