Я думаю, что правильный путь это сделать:
if(file_exists(stream_resolve_include_path($filepath))){
include $filepath;
}
Это потому, что документация говорит, что stream_resolve_include_path
разрешает "имя файла по пути включения в соответствии с теми же правилами, что и fopen () / include."
Некоторые люди предложили использовать is_file
или is_readable
, но , что не для общего случая , потому что в общем случае, если файл заблокирован или недоступен по какой-либо причине после того, как file_exists вернет TRUE Это то, что вы должны заметить с очень уродливым сообщением об ошибке прямо на лице конечного пользователя, или иначе вы открыты для неожиданного и необъяснимого поведения позже с возможной потерей данных и тому подобного.