Если более точно, вы должны использовать это условие:
if (array_search(__FILE__, get_included_files()) === 0) {
echo 'direct access';
}
else {
echo 'included';
}
get_included_files () возвращает индексированный массив, содержащий имена всех включенных файлов (если файл исполняется beign, тогда он был включен и его имя находится в массиве). Итак, когда файл имеет прямой доступ, его имя является первым в массиве, все остальные файлы в массиве включены.