私たちのサーバーからかなり大きいファイルを提供しているので、XSendfileの使用を強く推奨しました。サーバーはCpanelを実行しています。これまでは、一部のブラウザではうまくいかなかったストレートフォースダウンロードスクリプトを使用していました。 XSendfileで一石で2羽の鳥を殺すことを願っています。XSendfileが動作しない - PHP、Apache、Cpanel
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 aywayでそれを行うでしょう。なぜなら、私はApacheの設定に直接アクセスすることができず、むしろhtaccessを使ってそれを行うという制御を提供しているからです。
私はそれがうまく動作することができます。
だから、私はhtaccessをファイルに以下を追加しました:
XSendFile XSendFilePath /ホーム/デリ/中央 XSendFileAllowAbove上
オン(中央のファイルディレクトリへのスクリプトからの相対パス../../deli/central)
これらの行をhtaccessに追加してpublic_htmlディレクトリ(テストスクリプトと同じディレクトリ)に入れると、テストスクリプトを実行すると500エラー。エラーログを簡単に見には示しています
/home/north/public_html/.htaccess:XSendFilePathここでは使用できません
誰もが私が間違っているのかもしれないものへと私を啓発でしたか?
ps - 私は、Apacheの設定でそれを行う方がはるかに効率的だと読んだので、サーバはすべてのhtaccessファイルをクロールして読み込む必要はありません。これが本当かどうかわからない。
ヘルプは非常に高く評価され、これは事業上の致命のビットです:)私は言及を忘れてしまった
PS - 私はスクリプトにまっすぐ力のダウンロードに入れた場合、同じ$ファイルを使用してパスは、ファイルが正常にダウンロードします。その道は正しいと思われるでしょう。
あなたは '/ home/deli/...'からファイルを提供しようとしていますが、あなたの '.htaccess'ファイルは'/home/north/... 'の別のパスにあります。 (Apacheプロセスを実行している)正しいユーザーが '/ home/deli'パスにアクセスできることは確かですか? – leftclickben