Heim >Backend-Entwicklung >PHP-Tutorial >Warum kann mein PHP file_get_contents() keine externen URLs abrufen?

Warum kann mein PHP file_get_contents() keine externen URLs abrufen?

DDD
DDDOriginal
2024-12-06 02:46:14645Durchsuche

Why is my PHP file_get_contents() failing to retrieve external URLs?

PHP ini file_get_contents-Problem mit externer URL

Die Funktion file_get_contents() ermöglicht es PHP, den Inhalt einer Datei abzurufen, einschließlich derjenigen, die sich darin befinden externe URLs. In bestimmten Fällen kann es jedoch bei Benutzern zu einem Problem kommen, bei dem die Funktion ein leeres Ergebnis zurückgibt, wenn sie versuchen, auf eine externe URL zuzugreifen.

Mögliche PHP.ini-Konfigurationskonflikte

Dieses Problem könnte mit PHP.ini-Konfigurationen zusammenhängen, insbesondere solchen, die den externen URL-Zugriff einschränken. Um die Ursache des Problems zu ermitteln, müssen die relevanten Konfigurationsoptionen identifiziert werden:

  • allow_url_fopen: Diese Option steuert, ob PHP URLs öffnen kann. Überprüfen Sie, ob es auf 0 (deaktiviert) gesetzt ist, was verhindern würde, dass die Funktion auf externe Inhalte zugreift.
  • allow_url_include: Ähnlich wie „allow_url_fopen“ ermöglicht diese Option PHP, Dateien von URLs zu lesen. Stellen Sie sicher, dass es auf 1 (aktiviert) eingestellt ist.
  • safe_mode: Der abgesicherte Modus schränkt bestimmte PHP-Funktionen ein, einschließlich des URL-Zugriffs. Stellen Sie sicher, dass der abgesicherte Modus in php.ini deaktiviert (auf Aus) gesetzt ist.

Alternativer Ansatz: Verwendung von cURL

Wenn das Ändern der PHP.ini-Einstellungen nicht möglich ist Eine Option, eine Problemumgehung besteht darin, die cURL-Bibliothek zu verwenden, um die Funktionalität von file_get_contents() nachzuahmen:

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');

This Die Funktion initialisiert ein cURL-Handle, legt die erforderlichen Optionen fest, führt die Anforderung aus und gibt den Inhalt der angegebenen URL zurück.

Das obige ist der detaillierte Inhalt vonWarum kann mein PHP file_get_contents() keine externen URLs abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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