web-dev-qa-db-fra.com

File_exists () de PHP ne fonctionnera pas pour moi?

Pour une raison quelconque, ce code PHP ci-dessous ne fonctionnera pas, je ne peux pas le comprendre.

C'est très étrange, File_exists ne semble pas voir que l'image existe, j'ai vérifié pour m'assurer qu'un bon chemin de fichier est inséré dans la fonction file_exists et qu'il fonctionne toujours

Si je change file_exists en! File_exists, il retournera une image qui existe et d'autres qui n'existent pas

define('SITE_PATH2', 'http://localhost/');

$noimg = SITE_PATH2. 'images/userphoto/noimagesmall.jpg';
$thumb_name = 'http://localhost/images/userphoto/1/2/2/59874a886a0356abc1_thumb9.jpg';
if (file_exists($thumb_name)) {
    $img_name = $thumb_name;
}else{
    $img_name = $noimg;
}
echo $img_name;
32
JasonDavis

file_exists() doit utiliser un chemin de fichier sur le disque dur, pas une URL. Donc, vous devriez avoir quelque chose de plus comme:

$thumb_name = $_SERVER['DOCUMENT_ROOT'] . 'images/userphoto/1/2/2/59874a886a0356abc1_thumb9.jpg';
if(file_exists($thumb_name)) {
    some_code
}

http://us2.php.net/file_exists

79
AvatarKava

docs dire:

Depuis PHP 5.0.0, cette fonction peut également être utilisée avec certains URL. Reportez-vous à Liste des protocoles/wrappers pris en charge pour une liste des wrappers supportant stat() famille de fonctionnalités.

10
SilentGhost

file_exists ne fonctionne que sur le système de fichiers local.

Essayez donc ceci si vous utilisez localhost:

$thumb_name = 'images/userphoto/1/2/2/59874a886a0356abc1_thumb9.jpg';
if (file_exists($_SERVER['DOCUMENT_ROOT'].$thumb_name)) {
    $img_name = SITE_PATH2.$thumb_name;
} else {
    $img_name = $noimg;
}
5
Gumbo

Avez-vous activé l'option qui vous permet d'utiliser des URL externes? Vous pouvez le définir dans le fichier php.ini:

allow_url_fopen = 1
1
user142019

Essayez ci-dessous un. Ça marche pour moi

define('SITE_PATH2', 'http://localhost/');
$noimg = SITE_PATH2. 'images/userphoto/noimagesmall.jpg';
$thumb_name = 'http://localhost/images/userphoto/1/2/2/59874a886a0356abc1_thumb9.jpg';

if ($fileopen = @fopen($thumb_name)) {
    $img_name = $thumb_name;
    fclose($fileopen);
}else{
    $img_name = $noimg;
}
echo $img_name;
0
user4564807

http://php.net/manual/en/function.file-exists.php

avez-vous vérifié les commentaires ci-dessous?

Je lis juste certaines parties, mais il semble y avoir plusieurs problèmes.

La mise en cache peut être un problème. Lorsque vous ouvrez des URL FTP, le résultat est toujours vrai (ils disent dans les commentaires).

0
StampedeXV

Vous devez écrire le chemin du fichier comme "file:///C:/Documents%20and%20Settings/xyz/Desktop/clip_image001.jpg".

0
Mannusanghi