Heim > Artikel > Backend-Entwicklung > Warum funktioniert „file_exists“ nicht für Remote-Bilder 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!