PHP强制下载,htaccess全部拒绝,无法读取文件头


PHP force download, htaccess deny all, cant read file header

我想从受.htaccess保护以进行正常访问的文件夹中下载文件。我找到了很多教程,但没有一个对我有用。

.htaccess

<files "passportScan.jpg">
  deny from all
</files>

php

$file_name = 'passportScan.jpg';
$file_url = self::SERVER_URL . 'uploads/prom_conf/'.$user['uid'].'/' . $file_name;    
header("Content-Description: File Transfer"); 
header('Content-Type: image/jpeg');
header("Content-disposition: attachment; filename='"".$file_name."'"");
readfile($file_url);

当我访问url/uploads/passportScan.jpg时,它是被禁止的。这是正确的。但当我调用我的php方法时,它会强制下载文件,但随后出现错误"无法读取文件头!未知文件格式或找不到文件!"

编辑如果我删除htaccess,它会正常工作。

编辑2链接是通过电子邮件调用的。

如果文件与php脚本位于同一服务器上,只需使用内部路径

您可以创建文件,例如download.php,然后使用download.php?file=ID下载该图像,而不是使用完整的http url。