ユーザーがあらゆる種類のファイルをアップロードできる Web サイトを作成しています。すべてのファイルは「files/」フォルダーに保存されます。ユーザーがそのフォルダー内のファイルを表示およびダウンロードできるようにしたいが、実行はできないようにしたい。
JPG ファイルなどの一部のファイルは簡単です。ブラウザには、それらを表示するシステムが組み込まれていることは周知のとおりです。
PDF ファイルなどの他のファイルは直接表示できないため、ブラウザーが行うことは、ユーザーにダウンロード画面を表示することです。それもいい。
ただし、PHP ファイルなどの他のファイルには問題があります。そのようなファイルを開くと、注意しないと実行されてしまいます。たとえば、ファイルに
<?php echo 'ok'; ?>
次に、「files/myphpfile.php」に移動すると、ファイルの内容ではなく、「OK」と表示されます。これは、PHP ファイルだけでなく、サーバーが実行できる他のファイル タイプ (たとえば、ASP ファイルなど) でも発生すると思います。
私が必要としているのは、ユーザーがファイルを実行できないようにすることです。これにより、ユーザーが「files/myphpfile.php」に移動すると、ファイルの内容が表示されるか、ブラウザーがダウンロード画面を表示するようになります。理想的には、サーバーによって実行可能なすべてのファイル タイプのリストを作成する必要がない、一般的なソリューションです。
私にとって最も合理的なアプローチは、ファイルのパーミッションを 644 に設定して、ユーザーがファイルの読み取りのみを行えるようにすることでした。しかし、その後、PHP ファイルは実行され続けます。