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;
Ответы
Ответ 1
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
Ответ 2
docs говорят:
Начиная с PHP 5.0.0, эту функцию можно также использовать с некоторыми оболочками URL. Обратитесь к Список поддерживаемых протоколов/оберток для списка поддерживаемых оболочек stat()
семейство функций.
Ответ 3
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;
}
Ответ 4
Включена ли опция, позволяющая использовать внешние URL-адреса? Вы можете установить его в php.ini:
allow_url_fopen = 1
Ответ 5
http://php.net/manual/en/function.file-exists.php
Вы проверили комментарии ниже?
Просто читая его части, но, похоже, есть несколько проблем.
Кэширование может быть проблемой.
При открытии FTP-ссылок он всегда возвращает true (говорят в комментариях)
...
Ответ 6
Вам нужно написать путь к файлу, например "file:///C:/Documents%20and%20Settings/xyz/Desktop/clip_image001.jpg"
.
Ответ 7
Попробуйте ниже. Его работа для меня
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;