заголовок php, внутренняя ошибка сервера - PullRequest
1 голос
/ 22 июня 2010

Я кодировал код ниже себя и каждый раз получаю внутреннюю ошибку сервера, мне это надоедает, пожалуйста, помогите:

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

Ответы [ 2 ]

2 голосов
/ 22 июня 2010

Есть одно пустое место ...

?>
<?

Помните, что header () должна вызываться перед отправкой любого фактического вывода, либо обычными тегами HTML, пустыми строками в файле, либо из PHP. Это очень распространенная ошибка - читать код с помощью функций include () или require (), или другой функции доступа к файлу, и иметь пробелы или пустые строки, которые выводятся до вызова header (). Та же проблема существует при использовании одного файла PHP / HTML. 1

1 голос
/ 22 июня 2010

Есть ли причина, по которой вы используете file_get_contents () с URL-адресом, указывающим на тот же сервер, с которого запускается сам скрипт?Это вызывает второй HTTP-запрос, и если URL-адрес указывает на защищенный паролем ресурс (или ресурс, требующий допустимого сеанса), вызов file_get_contents() не сможет обработать это.

Есть личто-нибудь в журнале ошибок сервера относительно того, что плохой / недействительный заголовок?Вы пытались сохранить сгенерированные строки заголовка в файл, чтобы убедиться, что они генерируются правильно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...