Heim >Backend-Entwicklung >PHP-Tutorial >Warum funktioniert „file_exists' nicht für Remote-Bilder in PHP?

Warum funktioniert „file_exists' nicht für Remote-Bilder in PHP?

DDD
DDDOriginal
2024-10-31 23:12:28950Durchsuche

Why Doesn't `file_exists` Work For Remote Images in PHP?

Dateiexistenzprüfung für Remote-Bilder in PHP

In der Webentwicklung ist es häufig erforderlich, die Existenz von Remote-Bilddateien zu überprüfen, häufig mithilfe von Content-Delivery-Netzwerke (CDNs). Allerdings funktioniert die herkömmliche Methode „file_exists“ möglicherweise nicht richtig, wenn sie auf entfernte Standorte angewendet wird. In diesem Artikel werden die Gründe für dieses Problem untersucht und eine Lösung vorgestellt.

Problem:

Der Fernzugriff auf Bilddateien mit file_exists führt durchweg zu positiven Ergebnissen, unabhängig davon, ob das Bild vorhanden ist oder nicht. Der folgende Code veranschaulicht dieses Verhalten:

<code class="php">if (file_exists('http://www.example.com/images/$filename')) {
    echo "The file exists";
} else {
    echo "The file does not exist";
}</code>

Lösung:

Um dieses Problem zu beheben, schließen Sie den Dateinamen in Anführungszeichen (als Zeichenfolge) ein:

<code class="php">if (file_exists('http://www.mydomain.com/images/' . $filename)) {
    …
}</code>

Stellen Sie außerdem sicher, dass die Variable $filename ordnungsgemäß validiert wurde.

Technische Erklärung:

Die Funktion file_exists wird standardmäßig auf dem lokalen Dateisystem ausgeführt . Bei der Anwendung auf eine Remote-URL basiert es auf der PHP-Konfigurationseinstellung „allow_url_fopen“, die aus Sicherheitsgründen häufig deaktiviert ist. Wenn diese Einstellung deaktiviert ist, gibt file_exists für Remote-URLs immer „false“ zurück.

Das Einschließen des Dateinamens in Anführungszeichen zwingt PHP dazu, ihn als Zeichenfolge zu behandeln, wodurch verhindert wird, dass er als Remote-URL interpretiert wird. Dadurch kann die Funktion die Einschränkung „allow_url_fopen“ umgehen und die Prüfung korrekt durchführen.

Bitte beachten Sie, dass die Aktivierung von „allow_url_fopen“ zu Sicherheitslücken führen kann. Daher ist es wichtig, die Auswirkungen vor der Aktivierung sorgfältig abzuwägen.

Das obige ist der detaillierte Inhalt vonWarum funktioniert „file_exists' nicht für Remote-Bilder in PHP?. 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