Heim > Backend-Entwicklung > PHP-Tutorial > Warum kann „file_get_contents' von PHP keine externen URLs abrufen und wie kann ich das Problem beheben?

Warum kann „file_get_contents' von PHP keine externen URLs abrufen und wie kann ich das Problem beheben?

Barbara Streisand
Freigeben: 2024-12-24 20:07:12
Original
765 Leute haben es durchsucht

Why Does PHP's `file_get_contents` Fail to Fetch External URLs, and How Can I Fix It?

PHP file_get_contents kann externe URL-Inhalte nicht abrufen

Beim Versuch, die PHP-Funktion file_get_contents zu verwenden, um den Inhalt einer Remote-URL abzurufen (z. B. , file_get_contents('http://example.com')), tritt ein Problem auf, bei dem das Ergebnis durchweg leer ist einen bestimmten Server. Der Zugriff auf lokale Dateien mit derselben Funktion liefert jedoch die erwarteten Ergebnisse.

Wahrscheinliche Ursache in php.ini

Das leere Ergebnis wird wahrscheinlich auf eine Konfigurationseinstellung in PHP zurückgeführt php.ini-Datei.

Lösung

Um dieses Problem zu beheben, suchen Sie nach Folgende spezifische Konfigurationen innerhalb der php.ini-Datei:

  • allow_url_fopen: Stellen Sie sicher, dass diese Einstellung aktiviert ist (auf 1 oder Ein gesetzt). Es steuert, ob PHP mithilfe der Dateisystemfunktionen auf URLs zugreifen kann.
  • allow_url_include: Deaktivieren Sie diese Einstellung (auf 0 oder Aus setzen), wenn Sie verhindern möchten, dass PHP Remote-URLs direkt einbezieht.
  • file_get_contents.allow_url_fopen: Falls vorhanden, hat diese Einstellung Vorrang allow_url_fopen speziell für file_get_contents. Stellen Sie sicher, dass es aktiviert ist (auf 1 gesetzt).

Wenn diese Einstellungen nicht wie beschrieben festgelegt sind, passen Sie sie entsprechend an und starten Sie den PHP-Server neu, um die Änderungen zu übernehmen.

Alternativer Ansatz

Wenn Sie die php.ini-Einstellungen nicht ändern können oder einen anderen Ansatz bevorzugen, können Sie das Verhalten von file_get_contents mit nachahmen cURL, wie im folgenden Beispiel gezeigt:

function get_content($URL){
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_URL, $URL);
  $data = curl_exec($ch);
  curl_close($ch);
  return $data;
}

echo get_content('http://example.com');
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum kann „file_get_contents' von PHP keine externen URLs abrufen und wie kann ich das Problem beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage