SSH(https)にfile_get_contents()が使えないときはcURLだよね

2014年くらいから大手企業で順次HTTPS化(常時SSL)進んで
アメリカ政府が「2016年末までにすべての.govサイトを常時SSL/TLS化」とか言い出して、
2018年になったらもうchromeとかブラウザの方で『この接続ではプライバシーが保護されません』とか出しちゃう…

もうWebサイト全体がHTTPS化(常時SSL)になってやがる世の中である。
ツライ。

これで困ったのは、phpのバージョン・設定によっては、今までURL内容読み込むのにご愛用していたfile_get_contents()がSSL読み込みに対応していないのだ!

まず対応しているか否かをチェックしてみる。

$handle = file_get_contents($url);
$handle = fopen($url, "r");

両方読めなければ読めない状態になってる。

基本的にはphp.ini書き換えれば使える

php.iniが書き換えれるなら下記のようにすれば、大概使えるようになる。

allow_url_fopen = On

openが出来ない

extension=php_openssl.dll

先頭に『;』があれば無効なので、消して有効化する。
windowsなら『.dll』っすけど、環境変われば『.so』とか変わる。

潔くcURLを使う

cURLはパフォーマンスもいいらしいよ!(噂)

$url="https://www.google.com"; // 仮

$ch = curl_init(); // 初期化
// 以下オプションの設定(curl_setopt)。配列指定も可。
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // SSL対応用。init直後推奨。
curl_setopt( $ch, CURLOPT_URL, $url ); // アクセスURL指定
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); // 返り値を文字列に設定
$result = curl_exec( $ch ); // 実行しデータ得る
curl_close($ch); // 終了として閉じる

コメント

タイトルとURLをコピーしました