PHP:Readfile适用于localhost,但不适用于服务器

时间:2011-02-16 18:45:41

标签: php xampp readfile

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

我的问题:我构建了一个生成下载的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);

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

有什么想法吗?谢谢!

4 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

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

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

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

答案 2 :(得分:0)

尝试添加

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()来电之前。您很可能已经上传了除此脚本预期之外的文件,或者网络服务器无法读取文件。

答案 3 :(得分:0)

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