web-dev-qa-db-ja.com

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」に追加しようとしましたが、まだこのエラーが発生しました

50
Yang

私に同じエラーが発生しました。 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をリロードしてください!

105

composer 参照 に応じて、2つの関連オプションがあります: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 からアクセスできるようにするため。

13
Martin Zeitler

Opensslを有効にするには、php.iniに移動して次の行を有効にします。

extension=php_openssl.dll

opensslを有効にしたくない場合は、composerに設定できます。このコマンドでopensslを使用しないでください。

composer config -g -- disable-tls true

ただし、これはセキュリティ上の問題です。

9
Clairton Luz

私はまったく同じ問題を抱えていて解決策を見つけることができなかったので、しばらく考えて探したところ、PHP.INIがPHP Extensionsの正しいディレクトリを検索していないように思われたので、私は下に行きました:

「ロード可能な拡張機能(モジュール)が存在するディレクトリ。」そして、以下を見つけました:

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

そして、単に削除しました。 "extension_dir =" ext "の前、これはWindows専用であることに注意してください。別のオペレーティングシステムを実行している場合は、最初のextension_dirの前のセミコロンを削除してください。

なぜ私のものがまだマークされていないのか分かりませんが、問題がある場合に探すべきものです。

7

この問題はopensslと拡張ディレクタが原因で発生するため、php.iniファイルの拡張の下のコメントを外します

extension=php_openssl.dll extension_dir = "ext"

私のマシンで動作します。

2
Vrushal Raut