2010-06-21 69 views
1

我编写波纹管我自己的代码,我得到自动对焦*,我越来越厌倦这种每次荷兰国际集团内部服务器错误,请帮忙:PHP头,内部服务器错误

<? 
    function doer($str) 
    { 
     $d = base64_decode($str); 
     $a = explode('<||>',$d); 
     $v =array(
      'path' => $a[0], 
      'size' => $a[1], 
      'type' =>$a[2] 
     ); 
     return $v; 
    } 
    ?> 
    <? 
        header("Expires: Mon, 26 Jul 1997 05:00:00 GMT\n"); 
        header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
        $a= doer($_GET['d']); 
        $type = $a['type']; 
        header("Content-type: application/".$type.";\n"); //or yours? 
        header("Content-Transfer-Encoding: binary"); 
        $filename = $a['path']; 
        $len = $a['size']; 
        header("Content-Length: $len;\n"); 
        $outname="downfile.".$type; 
        header("Content-Disposition: attachment; filename=\"$outname\";\n\n"); 
        $filename = 'http://example.com/tst/'.$a['path']; 
        readfile($filename); 
    ?> 

更多info: 此脚本应放在(http://example.com/tst/)上,并且所有文件都存储在(http://example.com/tst/downloads)中。还没有.htaccess文件

回答

2

有一个空格...

?> 
<? 

记住header()函数发送任何实际输出之前必须调用,无论是普通的HTML标记,空行中文件或来自PHP。使用include()或require()函数或其他文件访问函数读取代码,并在调用header()之前输出空格或空行是非常常见的错误。使用单个PHP/HTML文件时存在同样的问题。 1

+0

kaveh塔赫,注意回答Marc B!这是安全性的失败...用户可以获取您的服务器或应用程序的信息 – 2010-06-23 03:41:03

1

是否有任何理由您使用file_get_contents()与URL,指向脚本本身运行的同一个服务器?这会导致关闭第二个HTTP请求,并且如果URL指向受密码保护的资源(或需要有效会话的URL),则file_get_contents()调用将无法处理该请求。

服务器的错误日志中有什么坏/无效标头是什么?您是否尝试将生成的标题字符串保存到文件以确保它们正确生成?