Maison > Article > développement back-end > Pourquoi « file_exists » ne fonctionne-t-il pas pour les images distantes en 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!