Pourquoi « file_exists » ne fonctionne-t-il pas pour les images distantes en PHP ?

DDD
Libérer: 2024-10-31 23:12:28
original
840 Les gens l'ont consulté

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

Vérification de l'existence de fichiers pour les images distantes en PHP

Il est fréquemment nécessaire de vérifier l'existence de fichiers d'images distantes dans le développement Web, en utilisant souvent réseaux de diffusion de contenu (CDN). Cependant, la méthode file_exists conventionnelle peut ne pas fonctionner correctement lorsqu'elle est appliquée à des emplacements distants. Cet article étudie les raisons de ce problème et présente une solution.

Problème :

L'accès à distance aux fichiers image à l'aide de file_exists donne systématiquement des résultats positifs, que l'image existe ou non. ou non. Le code suivant illustre ce comportement :

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

Solution :

Pour résoudre ce problème, placez le nom du fichier entre guillemets (sous forme de chaîne) :

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

De plus, assurez-vous que la variable $filename a été correctement validée.

Explication technique :

La fonction file_exists fonctionne sur le système de fichiers local par défaut . Lorsqu'il est appliqué à une URL distante, il s'appuie sur le paramètre de configuration allow_url_fopen de PHP, qui est souvent désactivé pour des raisons de sécurité. Lorsque ce paramètre est désactivé, file_exists renverra toujours false pour les URL distantes.

Mettre le nom du fichier entre guillemets oblige PHP à le traiter comme une chaîne, l'empêchant d'être interprété comme une URL distante. Cela permet à la fonction de contourner la restriction Allow_url_fopen et d'effectuer la vérification correctement.

Veuillez noter que l'activation de Allow_url_fopen peut introduire des vulnérabilités de sécurité, il est donc essentiel d'examiner attentivement les implications avant de l'activer.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!