ファイルを返さないx-sendfileについては、他にもたくさんの質問がありますが、どれも問題を解決できないようです。apache x-sendfileがファイルを見つけることができません
サイトのパブリックルート以外のディレクトリから画像を提供していて、できるだけオーバーヘッドの少ない状態でそれらの画像をユーザーに配信したいので、readfile()で処理しないでください。したがって私はx-sendfileを使用しようとしています。
私の開発環境は、64ビットウィンドウ上にXAMPP(apacheとphp)をインストールしたものです。 mod_xsendfile.soの64ビットWindowsバイナリを使用していますが、これはphpinfo()に従って正しく読み込まれているようです。
大文字と小文字の区別やバックスラッシュ/フォワードスラッシュで問題になる可能性があると思っていましたが、これは当てはまりません。
エラーログからパスをコピーして、イメージがロードされるエクスプローラウィンドウに貼り付けると、ファイルは存在します。また、私はfile_existsとfilesizeを使ってPHPのパスを検証しています。
httpd.confの設定:私はこれらのファイルが提供されるように得ることができる方法についてどのような洞察力は次のようになり
LoadModule xsendfile_module modules/mod_xsendfile.so
XSendFile On
XSendFilePath "c:/images-store/"
PHPコード
header('Content-Type: image/jpeg');
header('X-Sendfile: c:/image-store/5cca6ef24ae46c4346c24846ee3e5521213562ef-thumb.jpg');
エラー・ログ・エントリ
[pid 3208:tid 1900] (20023)The given path was above the root path: [client 127.0.0.1:57477] xsendfile: unable to find file: c:/image-store/5cca6ef24ae46c4346c24846ee3e5521213562ef-thumb.jpg
すばらしいです。