web-dev-qa-db-ja.com

ラッパー「https」が見つかりません-PHPの構成時に有効にするのを忘れましたか?

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

XAMPPでは、以下を実行しました(これらの変更中はApacheはオフでした):XAMPPコントロールパネルでAdminをクリックし、https:// localhost/xampp/に移動しました。そこから、ウェルカムページのこの行の証明書を受け入れました。

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

同じセクションでphpinfo()をチェックしました。 「環境」では、SERVER["HTTPS"]onです。 「Apache環境」では、HTTPSOnです。 「PHP変数」では、_SERVER["HTTPS"]Onです。 「Phar」の下のOpenSSL supportdisabled(ext/opensslをインストール)です。 Pharを有効にする方法がわかりません。

C:\ xamppにあるファイル自体については、PHPフォルダーに移動しました。実動と開発の両方のphp.iniファイル(申し訳ありませんが安全です)では、allow_url_fopen=Onallow_url_include=Onがあり、セミコロンを削除したので、extension=php_openssl.dllはコメントアウトされません。 .dllがPHPフォルダーのextフォルダーにあることも確認しました。 libeay32.dllとssleay32.dllは両方ともPHPおよびApacheフォルダーにあります。 Apacheフォルダーには、生産的なphp.iniファイルも開発用の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);

クエリを実行する他の2つのWebサイトがありますが、それらは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]:33行目のC:\ xampp\htdocs\tutorial\retrieve_website.phpで入力として提供された空の文字列

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

私が見落とした、または失敗したことは何ですか?私の知る限り、HTTPSとOpenSSLに関して調査したすべてのことを実行しました。

131
John M

;extension=php_openssl.dll/Apache/bin/php.iniのコメントを外すことでXAMPPで解決しましたdespitephpinfo()は、/php/php.iniがロードされたiniファイルであると教えてくれました。

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

173
kjetilh

extension=php_openssl.dllにあるphp.iniファイルにxampp/php/php.iniを追加する必要がありました。どういうわけかそこにありませんでした。追加してApacheを再起動すると、すべてが正常に機能しました。

94
Ezra

php.iniファイルに2行追加するだけです。

extension=php_openssl.dll
allow_url_include = On

私のために働いています。

32
Roopchand

あなたのApacheはおそらくSSLサポートでコンパイルされていません。とにかくfile_get_contentsの代わりにcURLを使用してください。このコードを試してください。失敗した場合、私は正しいです。

function curl_get_contents($url)
{
  $curl = curl_init($url);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
  curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
  curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
  $data = curl_exec($curl);
  curl_close($curl);
  return $data;
}
18

私はopensslの拡張を有効にしており、それは私のために動作します:)

; extension = php_openssl.dll

extension = php_openssl.dll

12
Saran Pal

openSuse 12.1では、必要なものは次のとおりでした。

zypper in php5-openssl
6
TheSatinKnight

私の場合、この問題は、Apacheとは異なるCLI用のphp.iniを使用するWAMPが原因であったため、WAMPメニューで行った設定はCLIに適用されません。 CLI php.iniを変更するだけで機能します。

6
dtbarne

私にとっては、php.iniの次の行のコメントを解除する必要がありました。

extension=php_openssl.dll
extension_dir = "ext"

「ext」は、php_openssl.dllが「ext」フォルダーにある場合に適用されます。

注:php.iniのtwoでこれを行わなければなりませんでしたそれ以外の場合は機能しません。 1つはvs.phpインストールフォルダーにあり、もう1つはPHPフォルダーにあります

C:\Program Files (x86)\Jcx.Software\VS.Php\2013\Php 5.6
C:\Program Files (x86)\PHP\v5.6

ソース

5
zeta

MAC AMPPSでは、php-5.5.iniを次のように更新しましたが、現在は動作します。

allow_url_include = On
extension=openssl.so
5
Elye

代わりにこの関数を使用できます。

function get_url_contents($url){  
  if (function_exists('file_get_contents')) {  
    $result = @file_get_contents($url);  
  }  
  if ($result == '') {  
    $ch = curl_init();  
    $timeout = 30;  
    curl_setopt($ch, CURLOPT_URL, $url);  
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);  
    $result = curl_exec($ch);  
    curl_close($ch);  
  }  

  return $result;  
}
4
actors315

リクエストhttps Windowsの場合のfile_get_contentsの問題、php.iniファイルの次の行のコメントを外します。

extension=php_openssl.dll
extension_dir = "ext"
3
Sandra

私はopsenSUSE Leapを使用していますが、同じ問題が発生しました。つまり、OpenSSLがサポートされていないということです。これは私がそれを解決した方法です:

  1. YaSTを開きます。
  2. ソフトウェア管理に移動します。
  3. 左ペインの検索ボックスに「php5-openssl」と入力し、リターンキーを押します。
  4. 右ペインの「php5-openssl」の横にあるチェックボックスをクリックして選択し、「同意する」をクリックします(これによりOpenSSLサポートが追加されます)。
  5. Apacheを再起動します:Sudo service Apache2 restart

これで完了です。

2
mtchuente

PHP7、php.iniファイルで、「;」を削除しますextension=opensslの前

2
Shusen Yi

一日中探し回った後、私はこのガイドのおかげで答えを見つけました: http://piwigo.org/forum/viewtopic.php?id=15727

基本的にEclipse-> Windows-> Preferences-> PHP Executablesの下に、.exeと.iniが参照されるセクションがあります。 EclipseからPHP Development Tools SDK Featureをインストールすると、デフォルトのデフォルトはEclipseディレクトリにありました。Helpメニューで新しいソフトウェアをインストールします。

その代わりに、PHP 5.3.5(CGI)という新しい実行可能ファイルを追加し、xamppのphpフォルダーからcgi.exeと.iniを参照しました。

Webarto、私を手伝ってくれてありがとう。

2
John M

Winginx (Apacheベースではなくnginxベース)を使用している場合は、次の4つの手順で修正しました。

  1. Toolsメニューで、Winginx PHP5 Config5名前に...):

    Winginx PHP5 Config

  2. php.iniを変更するPHPバージョンを選択します。

    PHP version selection

  3. PHP拡張機能タブでphp_openssl拡張機能を選択し、Saveをクリックしますボタン:

    php_openssl selection

  4. タスクバーから適切なPHPサービスを再起動します(StopおよびStart):

    Restart PHP service

1
CPHPython

これを試して:

function curl($url){
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
    $buffer = curl_exec($curl);
    curl_close($curl);
    return $buffer;
}
1
paprik

私もこのエラーを受け取りました。私のバージョンのPHPにはopensslがコンパイルされていなかったため、php.iniに拡張ディレクティブを追加するだけでは不十分でした。特定のケースでこれを解決する方法がわかりませんが、私にとっては、macportsを使用し、コマンドは次のとおりでした。

Sudo port install php5-openssl
1
mason

Wampサーバーを使用している場合は、アイコンをクリックして、このアイコンをクリックします wamp server icon click on this

次にPHPに移動し、PHP拡張をクリックします。そこからphp_opensslをアクティブにして、wampサーバーを再起動する必要があります active php_openssl from here

0
ML680

私の場合(FastCGIモードのWindows上のPHP 7.3)は、extension=opensslのコメントを外していました。ほとんどの人がここに投稿しているように、extension =php _opensslではありません。

(同じことは ここに投稿 でしたが、OSの詳細がないため、ここで重要な違いがあります。)

0
1234ru