YII2フレームワークを使用してPHPでウェブサイトを構築しました。file_get_contents($requestUrl, false, stream_context_create($arrContextOptions))を使用すると、次のようなエラーが発生します。エラー:0A000126:SSL ルーチン::読み取り中に予期しない EOF が発生しましたopenssl.cnf ファイルを編集してレガシー プロバイダーを有効にしようとしましたが、成功しませんでした。参考:出典: github.com
どのような助けでもいただければ幸いです。
サーバー: Nginx (nginx/1.18.0) OS: Ubuntu 22.04 LTS PHP: 7.4.29 Openssl: 1.1.1d
ベストアンサー1
このエラーはPHPだけでなく、さまざまな状況で発生するため、ここでは一般的な回答を記載します。他の回答では、すでに上流でソリューションを実装しているソフトウェアをアップグレードすることで問題を解決しています。理由と背景を説明します。ここOpenSSLにリンクしているほとんどのソフトウェアには、新しいopenssl
動作のサポートを導入するチケットがあります。例:1、2、3現在、Ubuntu 22.04 LTS のcurl
バージョンは 7.81.0 で、OpenSSL 3.0.x で予期しない EOF が発生した場合に失敗します。最新のバージョンcurl
は 7.88.1 で、問題は解決したようですが、正確なコミットやチケットは見つかりませんでした。Ubuntu 22.04 および古い curl を使用するシステムでの解決策は、たとえば次のように、最新のバージョンを手動でコンパイルしてインストールすることです。ここ。
重要なのは、この問題はクライアント側、サーバーに対して何もする必要はありません (特に、ほとんどの場合、それはサードパーティのサーバーであり、正常に動作します)。
要約:
apt remove curl
apt purge curl
apt-get update
apt-get install -y libssl-dev autoconf libtool make
cd /usr/local/src
wget https://curl.haxx.se/download/curl-7.88.1.zip
unzip curl-7.88.1.zip
cd curl-7.88.1
./buildconf
./configure --with-ssl
make
sudo make install
sudo cp /usr/local/bin/curl /usr/bin/curl
sudo ldconfig
curl -V