の直接の実行を防ぐことができます、<?php
ヘッダーの下にこれを追加し、論理を拒否します。あなたはそれを "すべて拒否してから許可する"というロジックで構築するべきです。たとえば、すべてのファイルに特定のディレクトリを提供するようにApacheに指示してから、そのディレクトリ内の一部のファイルを提供しないようにApacheに指示するためにその設定を上書きします。
<VirtualHost *:80>
ServerName foo.com
DocumentRoot "/path/to/files"
</VirtualHost>
ディレクトリレイアウトでは、このような:つまり、あなたはおそらくこのような何か持っているこの設定で
/path/to/files
index.php
config.php
/path/to/files/lib
db.php
etc.php
other_thing.php
を、誰でもリクエストすることができ、あなたがしようとしているものですhttp://foo.com/config.php
または直接http://foo.com/lib/etc.php
、防ぐ。あなたが拒否したいすべてのものに対して個々の例外を追加するのではなく、逆に始めてください。つまり、サービスを受けたくないファイルがある場合は、を文書ルートに入れないでください。
<VirtualHost *:80>
ServerName foo.com
DocumentRoot "/path/to/files/public"
</VirtualHost>
ここで、DocumentRootはプロジェクト内のサブディレクトリに設定されています。公共の資産のみをこのディレクトリに入れます。他のすべてのファイルは公開されているため、にははApacheに対応できませんが、PHPに含めることはできます。
/path/to/files
config.php
/path/to/files/lib
db.php
etc.php
other_thing.php
/path/to/files/public
index.php
それで、あなたは、ユーザーがそのディレクトリにPHPファイルにアクセスしたときに発生しますか?あたかもそれがプレーンテキストファイルであるかのように戻ってきましたか? – rickdenhaan
拡張子が '.php 'のファイルのみです。 – Croises
とにかくユーザーがファイルに直接アクセスすることはできません。私はちょうど他のPHPファイルから実行することができないので、それに加えてすべてのファイル(.phpの終わりを持つものだけでなく)の実行を防止したいだけです。 – kot