Вы должны использовать абсолютный путь, чтобы узнать, существует ли файл.
$abs_path = '/var/www/example.com/public_html/images/';
$file_url = 'http://www.example.com/images/' . $filename;
if (file_exists($abs_path . $filename)) {
echo "The file exists. URL:" . $file_url;
} else {
echo "The file does not exist";
}
Если вы пишете для CMS или PHP framework, то, насколько мне известно, все они определили константу для корневого пути документа.
например, WordPress использует ABSPATH, который можно использовать глобально для работы с файлами на сервере, используя ваш код, а также URL-адрес сайта.
Пример Wordpress:
$image_path = ABSPATH . '/images/' . $filename;
$file_url = get_site_url() . '/images/' . $filename;
if (file_exists($image_path)) {
echo "The file exists. URL:" . $file_url;
} else {
echo "The file does not exist";
}
Я делаю здесь лишнюю милю :). Поскольку этот код не требует особого обслуживания и довольно надежен, я бы написал его как сокращенное выражение if:
$image_path = ABSPATH . '/images/' . $filename;
$file_url = get_site_url() . '/images/' . $filename;
echo (file_exists($image_path))?'The file exists. URL:' . $file_url:'The file does not exist';
Краткое объяснение оператора IF:
$stringVariable = ($trueOrFalseComaprison > 0)?'String if true':'String if false';