PHP file_exists() не будет работать для меня?

По некоторым причинам этот код PHP ниже не будет работать, я не могу понять это.

Это очень странно, file_exists, похоже, не видит, что изображение существует, я проверил, чтобы убедиться, что в функцию file_exists вставлен правильный путь к файлу, и он все еще работает

Если я изменю file_exists на! File_exists, он вернет изображения, которые существуют, и те, которые не существуют

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;

7 ответов

Решение

file_exists() Нужно использовать путь к файлу на жестком диске, а не URL. Так что у вас должно быть что-то похожее на:

$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

документы говорят:

Начиная с PHP 5.0.0, эта функция также может использоваться с некоторыми упаковщиками URL. Обратитесь к списку поддерживаемых протоколов / оболочек для получения списка поддерживаемых оболочек. stat() Семья функциональности.

file_exists работает только в локальной файловой системе.

Попробуйте, если вы используете 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;
}

Вы включили опцию, которая позволяет вам использовать внешние URL-адреса? Вы можете установить его в php.ini:

allow_url_fopen = 1

Вы должны написать путь к файлу, как "file:///C:/Documents%20and%20Settings/xyz/Desktop/clip_image001.jpg",

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

Вы проверили комментарии ниже?

Просто читаю его части, но, похоже, есть несколько проблем.

Кеширование может быть проблемой. При открытии URL-адресов FTP он всегда возвращает true (говорят в комментариях) ...

Попробуй ниже одного. Это работает для меня

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;
Другие вопросы по тегам