回答:
WordPressサイトは、サイトのダッシュボードセクションを除いて、ほとんど問題なく機能しており、更新またはインストールに問題がありました。テーマをインストールしようとすると、「インストールに失敗しました:ダウンロードに失敗しました。有効なトランスポートが見つかりません」というエラーが表示されました。
幸いにも、私は次の解決策で問題を修正しました。
結局のところ、このエラーメッセージは、開発サーバーに拡張機能がないために発生し、WordPressが外部HTTPリクエストを実行できない場合に発生します。
解決策は非常に簡単です。これらのHTTP要求を可能にする欠落している拡張機能は、Wamp Serverとともにすでにインストールされています。デフォルトでは、それらは無効になっています。それらを有効にするには、php.ini設定ファイルを編集する必要があります。
php.iniファイルの編集
php.iniファイルには、多くの拡張機能のリストが含まれており、それらの一部はデフォルトで無効になっています。私が有効にしなければならなかった唯一のものはopenssl拡張です。
その拡張機能を有効にする手順は次のとおりです。
これで完了です!!!
WordPress HTTP APIは、可能な限り多くのサーバーで機能するように構築されており、さまざまな方法(トランスポート)を試してみます。
エラーメッセージによると、稼働中のトランスポートがないため、WordPressは発信HTTP要求を行うことができません。
Core Control WordPressプラグインのようなものをインストールすることをお勧めします。これにより、既存のすべてのHTTPトランスポートをデバッグできます。1つのトランスポートが機能していないときに、別のトランスポートが問題ない可能性があります。このプラグインを使用すると、壊れたプラグインを無効にして、新しいトランスポートでHTTP APIをテストできます。
実際にどのトランスポートも機能していないことが判明した場合は、ホスティングプロバイダーに連絡して、少なくともcURLなどをサーバーにインストールして、PHPでHTTPリクエストを実行できるようにする必要があります。
このエラーメッセージに関するアドバイスは非常に多様であり、誰も包括的な回答を提供しているようには見えません(いくつかのブログ、重複した回答、およびこことここ SOを参照)。うまくいけば、これは問題のより正式な見解です。
私は、Apacheを介して提供されるPHP上のWordPressのみを検討します(PHPで試したことがないため、現時点ではNginXについてコメントできません。また、他のフレームワークについてもコメントできません)。答えは、Apache 2.4.37を自作し、スレッドセーフなPHP 7.2とWordPress 4.2.Xを抽出したWindows 10への穏やかな偏見を示している可能性があります。
PHPとcURLは、WordPressが内部でとライブラリのRequests
ラッパーに依存していることを、かなり上手に追加すると説明しています。可能であればライブラリを優先しますが、プラグイン/テーマ/その他をダウンロードするためにライブラリにフォールバックする可能性があります。「トランスポートなし」エラーは、どちらのライブラリもApacheまたはPHP内で適切に構成されていないことを示しています。ファイアウォールがプロセスを妨害している可能性もあります。cURL
fSockets
Requests
cURL
fSockets
ApacheとPHPの両方の構成をテストし、ブラウザーから標準のPHPinfoスクリプトをセットアップしてロードします。このセクションにはcURL
、さまざまな情報を示すエントリを持つ、別のセクションが必要です。それ以外の場合は、次のスクリプトを設定およびロードして確認します。
<?php
echo 'Curl: ', function_exists('curl_init') ? 'Enabled' : 'Disabled';
?>
テスト方法がわかりませんfScokets
。
の可用性を確保するには、cURL
内でそれを有効にする必要がありますphp.ini
。
extentions_dir
がones extensionsフォルダを正しく指していることを確認します
extentions_dir="ext"
(あるいはextentions_dir="D:PATH/TO/php/ext"
、しばしば推奨されます)
cURL
拡張が有効になっていることを確認します
extension=curl
(extentions=php_curl(.so|.dll)
またはextentions="PATH/TO/php_curl(.so|.dll)"
、PHP <7.2の場合も推奨されます)
PHPそれはそのようだeay32
、ssh2
とssleay32
ライブラリももののパスに応じて利用可能である必要があります(OpenSSLの1.1でeay32
改名されたcrypto-*
とssleay32
改名されましたssl-*
)。Windowsでは、これらのライブラリをPHPルートフォルダーからsystem32
or wow64
フォルダーにコピーするのが醜いハックです。より良い解決策は、PHPのルートフォルダーを含むようにパス変数を変更することです(個人的には、必要に応じて構成するクリーンなパスを好みますが、これはPHPです)。* nixボックスでは、php5-curl
ディストリビューション用のパッケージをインストールするだけでよいようです。
注:上のコメントはPHPのページは1つが単に追加しうることを示唆しているLoadFile "PATH/TO/lib(eay32|ssh2)|ssleay32.dll"
ものにエントリをhttpd.conf
しかしcURL
もののパス時に、これらのライブラリーを探しているようです。提案をスムーズにする。XAmpp / Wampの人々は、自分のルートを自分のシステムパスにダンプしているように見えるため、このステップを回避します。
完了したら、Apacheを再起動します。Apacheモニターを使用している場合は、Apacheを実際に停止してから開始する必要があります。これにより、サービスを実行するための新しい環境が設定されます(再起動を保存します)。
これを実現するために何が必要かわかりません。