【问题标题】:file download permission denied to read the file文件下载权限被拒绝读取文件
【发布时间】:2016-04-12 17:15:10
【问题描述】:

我正在使用 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。

编辑: header("Location: $full_path") 工作正常,所以我认为它与路径无关。

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

文件结构:

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

【问题讨论】:

  • 嗯,它并不是说找不到文件是为了好玩。使用的路径可能有问题。请告诉我们$row['full_path'];$row['file_path'] 等中的内容。
  • 755 on files 使它们成为可执行文件。尝试将其更改为 644。
  • @Oldskool 我已编辑问题以包含您询问的详细信息。你能再看看吗...谢谢
  • @Fred-ii- 是的,我只是临时制作的
  • @codeomnitrix 啊,所以my comment 关于检查空格的问题有帮助。使用trim() 会很快解决这个问题。值得我回答,是/否? ;-) 不客气。

标签: php apache download permissions


【解决方案1】:

看到我对 OP 的 cmets 确实解决了这个问题...

我:

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

操作:

“WTF,字符串末尾有一个空格。对此我真的很抱歉,我从未检查过。感谢你们所有人... – codeomnitrix”

我:

trim() 会很快解决这个问题

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

【讨论】:

  • 谢谢你,如果你没有指出,我不会看空白的东西。非常感谢
  • @codeomnitrix 不客气。看到你的代码被检查出来,这是我认为会导致这一切的唯一原因。很高兴知道这个问题解决了,干杯
猜你喜欢
  • 2018-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-10
  • 2019-02-14
  • 2021-11-17
  • 1970-01-01
相关资源
最近更新 更多