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
}
документы говорят:
Начиная с 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;