Note also that if is_file(), (and also is_dir()), will return false if you have the open_basedir configuration set and the file (or directory) is not in one of the configured locations.
Essentially as the other notes offer, if you don't have permissions to access the file or dir these functions return false but this is also another use case that one may overlook.