PHPでファイルのダウンロードを強制する方法【header関数と.htaccessの使い方】
PHPでユーザーのブラウザにファイルを強制的にダウンロードさせるには、header() 関数を使って適切なHTTPヘッダーを送信します。本記事では、代表的な2つの方法を実装コード例とともに解説します。
方法1:header関数でダウンロードを強制する
以下のコードは、PHPでファイルのダウンロードを強制する最も基本的な方法です。
<?php
header('Content-Type: text/javascript');
header('Content-Disposition: attachment; filename="file.js"');
readfile('download-target.js'); // 動作確認のために出力することも可能
?>
ポイントとなるのは Content-Disposition: attachment というヘッダーです。このヘッダーを送信すると、ブラウザはファイルを画面に表示せず、ダウンロードとして扱います。filename= には、保存時に使用されるファイル名を指定します。
注意: header() 関数は、HTML・空白文字・echo文など何らかの出力が行われる前に呼び出す必要があります。出力後にヘッダーを送信すると「headers already sent」エラーが発生するだけでなく、他の処理による余計な出力がダウンロードファイルに混入してしまう恐れがあります。
方法2:.htaccessで一括設定する
もうひとつの方法として、.htaccessを利用するアプローチがあります。この方法では、サーバー上の特定の拡張子を持つすべてのファイルについて、アクセス時に自動的にダウンロードされるよう設定できます。
たとえば、サーバー上のすべてのCSVファイルをダウンロード対象にしたい場合は、.htaccessに以下の1行を追加します。
AddType application/octet-stream csv
これにより、CSVファイルはブラウザ上で開かれず、そのままダウンロードされるようになります。
PHPでCSVファイルを動的にダウンロードさせる場合
PHPスクリプト側でCSVファイルをダウンロードさせたい場合は、以下のようにヘッダーを組み合わせます。
<?php
header('Content-Type: application/csv');
header('Content-Disposition: attachment; filename="sample.csv"');
header('Pragma: no-cache');
readfile("path/to/csv-file.csv");
?>
Pragma: no-cache ヘッダーを加えることでキャッシュを無効化し、常に最新の内容のファイルがダウンロードされるようになります。
まとめ
- 個別のファイルをダウンロードさせたい場合 →
header()関数+readfile()の組み合わせ - 特定の拡張子のファイルをすべてダウンロードさせたい場合 → .htaccessの
AddType application/octet-streamを利用
用途に応じて適切な方法を選択し、ヘッダーは必ず出力前に送信することを忘れないようにしましょう。
-
【Windows 10】削除できないファイル・フォルダを強制削除する8つの方法
システムのストレージ容量を最適化するためには、不要なファイルを定期的に削除することが大切です。これにより、OSの動作速度とパフォーマンスが向上します。しかし、Windows 10では、ファイルやフォルダがどうしても削除できないケースがあります。Deleteキーを何度押しても、ごみ箱へドラッグしても消えてくれないファイルに遭遇したことはありませんか?そのような場合、「アイテムが見つかりません」「この項目は見つかりませんでした」「この場所は利用できません」といったエラーメッセージが表示されることがあります。 この記事では、Windows 10で削除できないファイルを強制的に削除する方法を詳しく解説
-
WordPressのwp-config.phpファイルを保護する方法を徹底解説
ハッカーの視点で考えてみてください。何千ものWebサイトが利用しているプラットフォームに侵入したり、複数のサイトに対してブルートフォース攻撃を仕掛けたりするのは、彼らにとって魅力的な標的です。WP-Scannerのようなオープンソースツールが出回っている現在、初心者レベルの攻撃者でも、プロフェッショナルなWordPressサイトに侵入し、悪夢のような被害をもたらすことが可能になっています。 その中でもwp-config.phpは、サイトの運命を左右する最重要ファイルの一つです。このファイルが漏洩すれば、サイト全体が危険にさらされます。本記事では、wp-config.phpファイルを安全に保護す