PHP强制下载的另一个问题。它正在工作,然后我做了一些事情,现在它没有。
我们开始(我接受的每种文件类型都有 if 语句,但仅显示一个就足以帮助诊断问题):
$string1 = 'home/myhost/aboveroot/reviews/';
$string2 = $username;
$string3 = '/';
$string4 = $filename;
$file= $string1.$string2.$string3.$string4;
$ext = strtolower (end(explode('.', $filename)));
//Finding MIME type
if ($ext = pdf){
header("Content-disposition: attachment; filename= '$filename'");
header('Content-type: application/pdf');
readfile('$file');
最终发生的是,它强制使用正确的文件名和正确的扩展名下载文件。它不会触发任何类型的损坏文件错误。但是,当我打开文件时,内容丢失了。如果它是一个word文档,它将拒绝打开。如果它是一个文本文档,则文本将更改为一堆 php 错误,如下所示:
警告:readfile($file)[function.readfile]:无法打开流:第68行的/home/myhost/public_html/wwww.mydomain.com/pagethatforceddownload.php中没有这样的文件或目录
然后它为带有标题的每一行给出这个错误(即使是那些包含在不应该满足其条件的 if 子句中:
警告:无法修改标头信息 - 标头已由 /home/myhost/public_html/wwww.mydomain.com/pagethatforceddownload 中的(输出开始于 /home/myhost/public_html/wwww.mydomain.com/pagethatforceddownload.php:68)发送。第69行的php
我真的迷路了。任何帮助将不胜感激。我终于让我的网站上的所有东西都能正常工作,并且 BAM,我意识到我遇到了一个非常混乱的问题。