ChatGPT解决这个技术问题 Extra ChatGPT

SSL/TLS 保护需要 openssl 扩展

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”,但仍然出现此错误

我尝试将“extension=php_openssl.dll”添加到“php.ini”,但仍然出现此错误
您的 php 是手动安装的还是从包中安装的?
我发现 Laragon 是最好的本地开发环境。更改 php.ini 后一定要重新加载 Apache。

m
mvandiepen

我也发生了同样的错误。我通过关闭 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/操作系统:

extension=php_openssl.so

视窗:

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 模块。我改进了我的答案。
我不明白这个。如果我在我的开发机器上这样做,那不会也被镜像到服务器上吗?如果不是,它如何在服务器上工作?
M
Martin Zeitler

根据作曲家 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" .谢谢!
N
NiceDevelopmentq

我遇到了完全相同的问题并且找不到解决方案,所以经过思考和寻找一段时间后,我发现我的 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
V
Vrushal Raut

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

extension=php_openssl.dll

extension_dir = "ext"

它适用于我的机器。


谢谢,这也适用于我的设置环境
C
Clairton Luz

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

extension=php_openssl.dll

如果您不想启用 openssl,您可以设置为 composer not use openssl 与此命令:

composer config -g -- disable-tls true

然而,这是一个安全问题。


要将 composer 配置为信任 Ubuntu 上的 CA,您将证书放入 /usr/local/share/ca-certificates/,要在 Windows 上执行此操作,您放弃并找到另一份工作。
实际上这对我有帮助,而且superuser.com/questions/1010080/…
V
Vasile Florin Vilsan

在尝试了一切之后,我终于设法解决了这个问题。以上建议的解决方案都不适合我。我的系统是一台 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% 的情况,但正如我所说,这对我不起作用。希望这可以帮助某人。

快乐编码!


M
Michael Neely

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

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

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


我认为这应该是赞成的答案
v
vincent PHILIPPE

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

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

https://i.stack.imgur.com/xztzn.png


y
yassine dotma

https://i.stack.imgur.com/snKO7.png

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

Q
Qriz75

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

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

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


S
Sebastian

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


关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅