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
私はこれをしました、そして私はまだ問題を抱えています...
他に何ができるでしょうか?
解決した
このエラーを解決するには、PHPのOpenSSL
パッケージをwebserverにインストールする必要があります。
FreeBSDサーバーでは、次のパッケージのインストールが必要になる場合があります:php53_openssl
とウェブサーバーを再起動します。
Windowsサーバーで、php.ini
構成ファイルを作成し、次の行のコメントを外します。
;extension=php_openssl
そしてウェブサーバーを再起動します。エラーを解決する必要があります。
参考:私はそれを このリンク から引き離しました。
PHP 7 for Windows 64bitの場合、libcrypto-1_1-x64.dll
を環境変数のパスに。例えば: C:\php\libcrypto-1_1-x64.dll;
私はこの問題に何時間も苦労し、ついにうまくいくものを見つけ出したので、私はこの一口を追加したかっただけです。これらの多くの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パラメータに、拡張機能が保存されている場所への正しいパスが含まれていることを確認してください。
お役に立てれば。
私も同じ問題を抱えていました。 Facebookのグラフにアクセスしようとしていました。 URLにアクセスできなかったのではなく、パラメーターが渡されなかったためにFacebookが400エラーを返していました。 HTTPS接続が機能するサイトでHTTPSに接続してみてください。例えば。これを試して:
file_get_contents("https://www.namhost.com");
それが機能する場合は、接続先のHTTPs接続が失敗している理由を確認する必要があります。問題は、HTTPSに接続できないことではなく、接続先の接続が要求を好きではないためです。
人々が言うように、構成を確認してください。
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');