これは私には奇妙なことのように思えます。動的にアップロードされるファイルのディレクトリがあり、ユーザーがそのファイルを開く前にまずアクセス許可を確認する必要があるため、次のようにしてディレクトリにhtaccessを追加しました。
RewriteEngine On
RewriteRule ^(.*)$ ../../get_file.php [QSA]
次に、phpでパーミッションをチェックインし、ユーザーにパーミッションがある場合は、次のようにファイルをユーザーに提供しようとしています。
//serve file back to user
$full_file_name = 'uploads/conversation_attachments/'.$file_name;
$filesize = filesize($full_file_name);
header("Content-length: ".$filesize);
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=".$full_file_name.";");
readfile($full_file_name);
'a'ファイルを吐き出しますが、'the'ファイルは吐き出しません。したがって、$ file_name = "rYMmfk3j9BSrjaRC.pdf"でファイル"rYMmfk3j9BSrjaRC.pdf"を取得する代わりに、"uploads_conversation_attachments_rYMmfk3j9BSrjaRC.pdf"というファイルを取得しています。どういうわけか、スラッシュをアンダースコアに置き換えているようです。
なぜこれが起こっているのか誰かが何か考えを持っていますか?助けていただければ幸いです!