簡體   English   中英

php標頭,內部服務器錯誤

[英]php header, internal server error

我自己編寫了代碼,每次都遇到內部服務器錯誤,對此我感到厭煩,請幫助:

<?
    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);
  ?>

更多信息:此腳本應放在( http://example.com/tst/ )上,所有文件都存儲在( http://example.com/tst/downloads )中。 也沒有.htaccess文件

有一個空格...

?>
<?

請記住,必須先通過常規HTML標記,文件中的空白行或從PHP發送任何實際輸出,然后調用header()。 使用include()或require(),函數或另一個文件訪問函數讀取代碼,並在調用header()之前輸出空格或空行,這是一個非常常見的錯誤。 使用單個PHP / HTML文件時,存在相同的問題。 1

您是否有理由將file_get_contents()與url一起使用,並指向腳本本身正在運行的同一服務器? 這將導致第二個HTTP請求被觸發,並且如果URL指向受密碼保護的資源(或要求有效會話的資源),則file_get_contents()調用將無法處理該請求。

服務器的錯誤日志中是否有關於無效/無效標頭的內容? 您是否嘗試過將生成的標頭字符串保存到文件中以確保正確生成了它們?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM