ラッパー「https」が見つかりません。PHP の設定時に有効にするのを忘れましたか? 質問する

ラッパー「https」が見つかりません。PHP の設定時に有効にするのを忘れましたか? 質問する

問題は質問にあります。私はこれに関して解決策を徹底的に調査し、これに関するトピックがあることも知っています。私もそれらに従ってきましたが、何も機能しませんでした。そうは言っても、これまでに行ったことをすべて正確にリストします。私は Windows XP コンピューターの最新バージョンの Eclipse で PHP 5.2.14 を Zend Debugging とともに実行しています。RAM は 1 GB あります。Apache、MySQL、FileZilla をインストールして XAMPP を実行しています。

XAMPPでは次の操作を実行しました(これらの変更中はApacheはオフでした):管理者XAMPP コントロール パネルから に移動し、 に移動しましたhttps:// localhost/xampp/。そこから、ようこそページの次の行から証明書を受け入れました。

OpenSSL サポートの場合は、https:// 127.0.0.1 または https:// localhost でテスト証明書を使用してください。

同じセクションで、 を確認しましたphpinfo()。「環境」の下にはSERVER["HTTPS"]がありますon。「Apache 環境」の下には がHTTPSありますOn。「PHP 変数」の下には_SERVER["HTTPS"]がありますOn。「Phar」の下には(install ext/openssl)OpenSSL supportがありますdisabled。Phar を有効にする方法がわかりません。

さて、C:\xampp 内のファイル自体については、PHP フォルダーに移動しました。本番環境と開発環境の両方の php.ini ファイルの下に (安全第一に)、、があり、allow_url_fopen=Onセミコロンallow_url_include=Onを削除したので、extension=php_openssl.dllコメント アウトされなくなりました。.dll が PHP フォルダーの ext フォルダーにあることも確認しました。libeay32.dll と ssleay32.dll はどちらも PHP フォルダーと Apache フォルダーにあります。Apache フォルダーには、本番環境または開発環境の php.ini ファイルは含まれていません。

私は行ったhttp://www.slproweb.com/products/Win32OpenSSL.html安全対策として Win32 OpenSSL v1.0.0d をインストールしました。

現在、retrieve_website.php 内の問題のコード行は次のようになります。

$urlquery = "https://www.googleapis.com/customsearch/v1?key=".$appid."&cx=".$google_searchid."&q=".$query."&alt=atom&num=".$results;
$xmlresults = file_get_contents($urlquery);

他にクエリを実行する Web サイトが 2 つありますが、これらは HTTP 経由で提供されており、問題なく動作します。スクリプトの末尾近くに次のコード行も入力しています。

echo 'openssl: ',  extension_loaded  ('openssl') ? 'yes':'no', "\n";
echo 'http wrapper: ', in_array('http', $w) ? 'yes':'no', "\n";
echo 'https wrapper: ', in_array('https', $w) ? 'yes':'no', "\n";
echo 'wrappers: ', var_dump($w);

これを Eclipse で PHP スクリプトとして実行すると、すべてが希望どおりに出力され、次のような結果が得られます。

openssl: yes
http wrapper: yes
https wrapper: yes
wrappers: array(10) {
  [0]=>
  string(5) "https"
  [1]=>
  string(4) "ftps"
  [2]=>
  string(3) "php"
  [3]=>
  string(4) "file"
  [4]=>
  string(4) "data"
  [5]=>
  string(4) "http"
  [6]=>
  string(3) "ftp"
  [7]=>
  string(13) "compress.zlib"
  [8]=>
  string(14) "compress.bzip2"
  [9]=>
  string(3) "zip"
}

Apacheを起動した後、これらすべての変更を行ったにもかかわらず、EclipseとFirefoxでPHPスクリプトに初めてアクセスすると、同じエラーが発生します。http://localhost/tutorial/retrieve_website.php:

警告: file_get_contents() [function.file-get-contents]: ラッパー "https" が見つかりません。PHP の設定時に有効にするのを忘れましたか? C:\xampp\htdocs\tutorial\retrieve_website.php の 29 行目

警告: file_get_contents(https:// www.googleapis.com/customsearch/v1?key=API IDを削除しました&cx=検索IDを削除しました&q=The+Devil+went+down+to+Georgia&alt=atom&num=5) [function.file-get-contents]: ストリームを開けませんでした: そのようなファイルまたはディレクトリはありません (C:\xampp\htdocs\tutorial\retrieve_website.php の 29 行目)

警告: DOMDocument::loadXML() [domdocument.loadxml]: 入力として空の文字列が指定されました (C:\xampp\htdocs\tutorial\retrieve_website.php の 33 行目)

openssl: いいえ http ラッパー: はい https ラッパー: いいえ ラッパー: 配列 (10) { [0]=> 文字列 (3) "php" [1]=> 文字列 (4) "file" [2]=> 文字列 (4) "glob" [3]=> 文字列 (4) "data" [4]=> 文字列 (4) "http" [5]=> 文字列 (3) "ftp" [6]=> 文字列 (3) "zip" [7]=> 文字列(13) "compress.zlib" [8]=> 文字列(14) "compress.bzip2" [9]=> 文字列(4) "phar" }

私が見落としたり、できなかったことは何でしょうか? 私の知る限り、HTTPSとOpenSSLに関して調べたことはすべてやりました

ベストアンサー1

;extension=php_openssl.dllXAMPPでコメントを外すことで解決しました/apache/bin/php.ini にもかかわらずphpinfo() は、/php/php.iniロードされた ini ファイルであることを示しています。

編集:Ezra の回答は、適切な ini ファイルに拡張行を直接追加する最善の解決策だと思います。

おすすめ記事