web-dev-qa-db-ja.com

file_get_contentsでラッパー「https」が見つかりません

Https:// URLでfile_get_contents()を呼び出すと、次のエラーが発生します。

warning: file_get_contents(): Unable to find the wrapper "https" - did you forget to enable it when you configured PHP?

私は10以上読みましたSO質問とそれらすべてはextension=php_openssl.dll

私はこれをしました、そして私はまだ問題を抱えています...

他に何ができるでしょうか?

11
John Smith

解決した

このエラーを解決するには、PHPのOpenSSLパッケージをwebserverにインストールする必要があります。

FreeBSDサーバーでは、次のパッケージのインストールが必要になる場合があります:php53_opensslとウェブサーバーを再起動します。

Windowsサーバーで、php.ini構成ファイルを作成し、次の行のコメントを外します。

 ;extension=php_openssl

そしてウェブサーバーを再起動します。エラーを解決する必要があります。

参考:私はそれを このリンク から引き離しました。

11
Amit Shah

PHP 7 for Windows 64bitの場合、libcrypto-1_1-x64.dllを環境変数のパスに。例えば: C:\php\libcrypto-1_1-x64.dll;

3
Артем

私はこの問題に何時間も苦労し、ついにうまくいくものを見つけ出したので、私はこの一口を追加したかっただけです。これらの多くのWAMP/XAMP/MAMPインストールでは、構成ファイルは非標準のディレクトリ(つまり、C:\ MAMP\conf\php\php7.2.10\php.ini)に配置されます。 php cliがINI変更中)をロードしたことを確認する必要があります。

$ php --ini

正しいINIをポイントしていない場合、または構成ファイルをまったく読み込まない場合は、スクリプトを実行するユーザーのPHPRC環境変数を変更して、INI thatまた、php.iniのextension_dirパラメータに、拡張機能が保存されている場所への正しいパスが含まれていることを確認してください。

お役に立てれば。

0
Vincent

私も同じ問題を抱えていました。 Facebookのグラフにアクセスしようとしていました。 URLにアクセスできなかったのではなく、パラメーターが渡されなかったためにFacebookが400エラーを返していました。 HTTPS接続が機能するサイトでHTTPSに接続してみてください。例えば。これを試して:

file_get_contents("https://www.namhost.com");

それが機能する場合は、接続先のHTTPs接続が失敗している理由を確認する必要があります。問題は、HTTPSに接続できないことではなく、接続先の接続が要求を好きではないためです。

0
coderama

人々が言うように、構成を確認してください。

phpinfo.php

<?php
phpinfo();
?>

WebページでOpenSSLを検索します。また、php.iniファイルを変更した後は、必ずWebServerを再起動してください。

file_get_contents()を使用できない場合は、代わりにcURLを使用します(可能な場合)。多くの点でより速く、より優れています。

function url($url,$option = null) {

    $cURL = curl_init();

    if ($option) {
        curl_setopt($cURL, CURLOPT_URL, $url.$option);
    } else {
        curl_setopt($cURL, CURLOPT_URL, $url);
    }

    curl_setopt($cURL, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($cURL, CURLOPT_AUTOREFERER, 1);
    curl_setopt($cURL, CURLOPT_HTTPGET, 1);
    curl_setopt($cURL, CURLOPT_VERBOSE, 0);
    curl_setopt($cURL, CURLOPT_HEADER, 0);
    curl_setopt($cURL, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($cURL, CURLOPT_SSL_VERIFYPEER, 1);
    curl_setopt($cURL, CURLOPT_SSL_VERIFYHOST, 1);
    curl_setopt($cURL, CURLOPT_DNS_USE_GLOBAL_CACHE, 0);
    curl_setopt($cURL, CURLOPT_DNS_CACHE_TIMEOUT, 2);

    $output['page'] = curl_exec($cURL);
    $output['contentType'] = curl_getinfo($cURL, CURLINFO_CONTENT_TYPE);

    curl_close($cURL);

    return $output;

}

$page = url('https://example.com/','i/like/subfolders');
0
Anuga