サーバーから非常に大きなファイルを提供しているため、XSendfile を使用することを強くお勧めします。サーバーは Cpanel を実行しています。以前は、単純な強制ダウンロード スクリプトを使用していましたが、これも一部のブラウザーではうまく機能しませんでした。XSendfile で一石二鳥を狙う。
OK、ホストはサーバーで Xsendfile を有効にしました。簡単なテスト スクリプトを作成しました。
$file = "/home/deli/central/testfile.doc";
header("X-Sendfile: $file");
header("Content-type: application/octet-stream");
header('Content-Disposition: attachment; filename="' . basename($file) . '"');
exit;
これを実行すると、ダウンロード プロンプトが表示されます。ただし、送信されるファイルは常に 0kb です。
少し調べてみると、apache 構成ファイルまたは htaccess ファイルでさまざまなことを設定する必要があるようです。また、Apache の設定に追加するのは得策ではないと言われました。そうしないと、更新時に上書きされる可能性があります。私はどちらかというと htaccess でそれを行いたいと思っています。なぜなら、私は apache の設定に直接アクセスすることができず、htaccess でそれを行うことで提供される制御をしたいからです。
もちろん、それを機能させることができれば。
そこで、htaccess ファイルに以下を追加しました。
XSendFile 上の XSendFilePath /home/deli/central XSendFileAllowAbove オン
(スクリプトから中央ファイル ディレクトリへの相対パスは ../../deli/central です)
これらの行を htaccess に追加して public_html ディレクトリ (テスト スクリプトと同じディレクトリ) に配置すると、テスト スクリプトを実行すると 500 エラーが発生します。エラーログを簡単に見ると、次のように表示されます。
/home/north/public_html/.htaccess: ここでは XSendFilePath は許可されていません
私が間違っているかもしれないことについて、誰かが私を啓発してくれますか?
ps - apache config で実行する方がはるかに効率的であるため、サーバーがすべての htaccess ファイルをクロールしてロードする必要がないことを読んだところです。これが本当かどうかはわかりません。
ヘルプは大歓迎です。これはプロジェクトのちょっとしたショーストッパーです:)
ps 言及するのを忘れていました-同じ $file パスを使用して、スクリプトに直接強制ダウンロードを入れると、ファイルは問題なくダウンロードされます。したがって、パスは正しいように見えます。