Tienes que usar la ruta absoluta para ver si el archivo existe.
$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";
}
Si está escribiendo para el marco CMS o PHP, hasta donde yo sé, todos ellos han definido una constante para la ruta raíz del documento.
por ejemplo, WordPress usa ABSPATH que se puede usar globalmente para trabajar con archivos en el servidor usando su código así como la URL del sitio.
Ejemplo de 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";
}
Estoy haciendo un esfuerzo adicional aquí :). Debido a que este código no necesitaría mucho mantenimiento y es bastante sólido, lo escribiría con una declaración abreviada 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';
Declaración abreviada IF explicada:
$stringVariable = ($trueOrFalseComaprison > 0)?'String if true':'String if false';