【问题标题】:PHP: Readfile works at localhost but not at serverPHP:Readfile 在本地主机上工作,但在服务器上不工作
【发布时间】:2011-02-16 18:45:41
【问题描述】:

我试图解决我的问题几个小时并搜索了谷歌和几个板,但我没有找到解决方案。

我的问题:我构建了一个 PHP 脚本来生成下载。 代码如下:

$file = "file.pdf";
$download_folder = "../contents/"; //RELATIV
$type= mime_content_type($download_folder.$file);
    header("Content-Type: $type");
    header("Content-Disposition: attachment; filename=\"$file\"");

    readfile($download_folder.$file);

如果我在我的本地主机服务器 (xampp) 上尝试它,它会工作并且开始下载文件。如果我将脚本上传到我的托管服务器(不是自己的,它已经消失了),我只会得到一个空白页。

有什么想法吗?谢谢!

【问题讨论】:

    标签: php xampp readfile


    【解决方案1】:

    检查权限。 如果您对该文件具有读取权限。 您可以使用 chmod 命令设置权限。

    【讨论】:

      【解决方案2】:

      确保您已打开错误报告并在开发过程中显示所有内容:

      ini_set('display_errors', 1);
      error_reporting(E_ALL);
      

      这应该告诉你问题是什么。

      我的猜测是路径有问题。 尝试使用绝对路径,例如/var/www/vhosts/yoursite.com/httpdocs/contents/file.pdf

      如果失败,则可能是权限问题。

      【讨论】:

      • 好主意!服务器上不存在 mime 类型函数。现在可以了
      【解决方案3】:

      尝试添加

      if (!file_exists($download_folder . $file)) {
         die("can't find the file")
      }
      if (!is_readable($download_folder . $file)) {
         die("can't read the file")
      }
      

      在拨打header() 之前。很可能您已将文件上传到该脚本预期的位置以外的位置,或者网络服务器无法读取文件。

      【讨论】:

        【解决方案4】:

        发现错误。在网络服务器上不是函数 mime_content_type 。感谢您的帮助

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-08-04
          • 2014-01-15
          • 1970-01-01
          • 2015-04-09
          • 2016-02-21
          • 2012-11-13
          相关资源
          最近更新 更多