文件下载权限被拒绝读取文件

时间:2016-04-12 17:15:10

标签: php apache download permissions

我使用php readfile函数忽略在服务器上提供文件的完整直接url。但是它只显示错误而不是下载文件,说明failed to open stream: No such file or directory in但是文件位于指定的目录中。

我试图下载的文件是由用户上传的(即httpd进程,我认为,这将是所有者)。但是,以下代码表示无法打开文件 -

$full_path = $row['full_path'];
            $file_name = $row['file_path'];
            header("Pragma: public");
            header("Expires: 0");
            header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
            header('Content-Type: application/pdf');
            header("Content-Type: application/force-download");
            header("Content-Disposition: attachment; filename=\"".$file_name."\"");                 

            readfile($full_path);

为目录设置的默认权限为755,我下载的文件也显示权限为755.我无法理解这里的问题是什么。

编辑:服务器是hostgator。

编辑:标题("位置:$ full_path")运行正常,所以我不认为它与路径有关。

编辑:$full_path看似 - uploads/abc.pdf$file_path看起来像abc.pdf

文件结构:

--root
  downloader.php
      ---uploads
         abc.pdf

1 个答案:

答案 0 :(得分:3)

看到我对OP的评论确实解决了这个......

我:

  

“var_dump();揭示了什么?确保在任何地方都没有引入任何空格。我现在有点困惑。弗雷德-ii - ”

OP:

  

“WTF,字符串末尾有一个空格。我真的很抱歉,我从来没有检查过。感谢你们所有人...... - codeomnitrix” < / p>

我:

  

trim()可以在jiffy中修复它

咨询:http://php.net/manual/en/function.trim.php