Heim >Backend-Entwicklung >PHP-Tutorial >Warum kann „file_get_contents()' externe URLs auf diesem Server nicht abrufen?

Warum kann „file_get_contents()' externe URLs auf diesem Server nicht abrufen?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-13 14:57:11831Durchsuche

Why is `file_get_contents()` Failing to Retrieve External URLs on This Server?

File_get_contents-Problem mit externen URLs auf einem bestimmten Server

Problem:

Bei Verwendung der PHP-Funktion file_get_contents() zum Abrufen den Inhalt einer externen URL auf einem bestimmten Server, wird ein leeres Ergebnis zurückgegeben. Die Funktion funktioniert jedoch ordnungsgemäß, wenn sie lokal verwendet wird oder auf interne URLs auf demselben Server zugreift.

Mögliche Ursache:

Das Problem hängt wahrscheinlich mit einer PHP.ini zusammen Konfigurationseinstellung.

Lösung:

Um festzustellen, welche PHP.ini-Konfiguration das verursacht Problem, folgen Sie diesen Schritten:

  1. Überprüfen Sie die Einstellung „allow_url_fopen“: Diese Einstellung steuert, ob PHP über die fopen-Funktionsfamilie auf externe URLs zugreifen kann. Wenn es auf „Aus“ gesetzt ist, kann file_get_contents() keine Inhalte von externen URLs abrufen.

    Überprüfen Sie die PHP.ini-Datei auf die folgende Zeile:

    allow_url_fopen = Off

    Wenn ja Stellen Sie es auf „Aus“ und ändern Sie es auf „Ein“.

  2. Überprüfen Sie „allow_url_include“. Einstellung: Diese Einstellung steuert, ob PHP externe URLs in Skripte einbinden kann. Wenn es auf „Aus“ gesetzt ist, kann file_get_contents() möglicherweise keine Inhalte von externen URLs abrufen.

    Überprüfen Sie die PHP.ini-Datei auf die folgende Zeile:

    allow_url_include = Off

    Wenn ja auf Aus stellen, ändern Sie es auf Ein.

  3. Verwenden Sie eine alternative Funktion:Wenn die Wenn die oben genannten Einstellungen das Problem nicht lösen, können Sie alternative Funktionen verwenden, um das Verhalten von file_get_contents() nachzuahmen. Eine solche Funktion ist curl_init():

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

Das obige ist der detaillierte Inhalt vonWarum kann „file_get_contents()' externe URLs auf diesem Server nicht 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