Maison  >  Article  >  développement back-end  >  Pourquoi « file_exists » ne fonctionne-t-il pas pour les images distantes en PHP ?

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

DDD
DDDoriginal
2024-10-31 23:12:28841parcourir

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>

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>

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!

Déclaration:
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