PHPでプログラムを作成した場合、includeや、require_onceなどで別のPHPファイルを読み込んで利用する場合があります。

普通に利用していれば、そのような別のPHPファイルに直接アクセスすることはないのですが、セキュリティ上の観点から、直接アクセスして欲しくないPHPファイルには直接のアクセスを禁止する制限をかけておきたいものです。

記述方法は以下のようになります。

// 直接アクセス禁止
if (array_shift(get_included_files()) === __FILE__) {
    die('エラー:正しいURLを指定してください。');
}

get_included_files関数でPHPファイル内でincludeしているPHPファイルの一覧を配列で取得します。この配列の最初の要素には自身のファイル名が格納されているため、array_shift関数で最初の要素、つまり、自分自身のファイル名を取り出します。その取り出したファイル名と、PHPが自動的に定義するマクロ__FILE__(プログラムを実行しているPHPファイル名)と比較すると、一致するため、エラーとなります。

このコードを直接実行してほしくないPHPスクリプトの先頭に書いておけば、直接実行された時には、「正しいURLを指定してください。」と警告が表示されるようになります。