Я нашел это php-единственное и неизменное решение, которое работает как с http, так и с cli:
Определить функцию:
function forbidDirectAccess($file) {
$self = getcwd()."/".trim($_SERVER["PHP_SELF"], "/");
(substr_compare($file, $self, -strlen($self)) != 0) or die('Restricted access');
}
Вызвать функцию в файле, который вы хотите запретить прямой доступ к:
forbidDirectAccess(__FILE__);
Большинство решений, приведенных выше для этого вопроса, не работают в режиме Cli.