1. ホーム
  2. php

[解決済み] file_get_contents() "Failed to open stream", "No such file" というエラーを修正する方法

2022-01-29 05:41:29

質問

PHPスクリプトを実行しようとすると、以下のエラーが発生します。

ストリームを開くのに失敗しました。No such file or directory in C:♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪ スクリプトを実行します。

私のコードは以下の通りです。

<?php

$json = json_decode(file_get_contents('prod.api.pvp.net/api/lol/euw/v1.1/game/by-summoner/20986461/recent?api_key=*key*'));

print_r($json);

?>

*key* は、URLの文字列(私のAPIキー)の置き換えで、プライバシー保護のため非表示にしています。

を削除しました。 https:// をURLから削除すると、エラーが1つ消えました。

何か間違ったことをしているのでしょうか?URLが悪いのかな?

解決方法は?

URLにプロトコル情報がない。PHPはこれをファイルシステムのパスとみなし、指定された場所にあるファイルにアクセスしようとします。しかし、その場所は実際にはファイルシステムに存在しないため、エラーがスローされます。

を追加する必要があります。 http または https を、コンテンツを取得しようとするURLの先頭に追加してください。

$json = json_decode(file_get_contents('http://...'));

に関しては、以下のようなエラーになります。

wrapperが見つからない - PHPを設定する際に有効化するのを忘れていませんか?

あなたのインストールしたApacheは、おそらくSSLをサポートするようにコンパイルされていないでしょう。手動でOpenSSLをインストールして使ってみるか、cURLを使ってみてください。私は個人的には file_get_contents() . 使える関数はこちらです。

function curl_get_contents($url)
{
  $ch = curl_init($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);
  $data = curl_exec($ch);
  curl_close($ch);
  return $data;
}

使用方法

$url = 'https://...';
$json = json_decode(curl_get_contents($url));