PHP强制下载的另一个问题。它正在工作,然后我做了一件事,现在它没有。强制下载损坏的文件重写文件内容
这里,我们去(有,如果每种文件类型声明,我接受,但只是显示一个应该足以帮助诊断问题):
$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');
什么最终发生的是,它迫使文件下载使用正确的文件名和正确的扩展名。它不会触发任何类型的损坏的文件错误。但是,当我打开文件的内容丢失。如果它的文字文件将拒绝打开。如果一个文本文档文字将变为一堆PHP错误如下:
警告:ReadFile的($文件)[function.readfile]:未能打开流:没有这样的文件或目录中的线/home/myhost/public_html/wwww.mydomain.com/pagethatforceddownload.php
然后,它给出了该误差为与插头的每一行(甚至那些包含在如果不应该是m的子句eeting他们的条件:
警告:不能更改头信息 - 头已经发出在/家庭/ myhost的(输出开始/home/myhost/public_html/wwww.mydomain.com/pagethatforceddownload.php:68)在线
我真的失去了/public_html/wwww.mydomain.com/pagethatforceddownload.php。任何帮助将不胜感激。我终于使我的网站上的所有工作和BAM,我意识到,我有这个问题的巨大混乱。
由于一吨。对于什么时候使用“或者”,我总是有点困惑,对于一些基本的读法可能会有所澄清。 – user187680
简单的引用,php永远不会查看字符串中是否有变量,所以'$ variable '将总是给'$变量',即使你之前声明了一个$变量。 使用双引号,php将搜索字符串中的变量并用值替换它们,“a $ variable”将变成“变量的值”。 查看http://php.net/manual/language.types.string.php了解更多信息。 –
此外,如果我的答案帮助了你,请[接受它](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) –