Еще вопрос про докачку

mvf

Guest
Еще вопрос про докачку

Здравствуйте.
Не могу понять в чем дело? Есть скрипт докачки файлов (взял из примеров), вот кусок:
PHP:
  ...
  if(!file_exists($filename))
  {
    header("HTTP/1.0 404 Not Found");
    exit; 
  } 
  $fsize = filesize($filename);
  $ftime = date("D, d M Y H:i:s T", filemtime($filename));
  $fd = @fopen($filename, "rb");
  if(!$fd)
  {
    header ("HTTP/1.0 403 Forbidden");
    exit;
  }
  // Если запрашивающий агент поддерживает докачку 
  if($HTTP_SERVER_VARS["HTTP_RANGE"])
  { 
    $range = $HTTP_SERVER_VARS["HTTP_RANGE"];
    $range = str_replace("bytes=", "", $range);
    $range = str_replace("-", "", $range);
    if($range)
    {
      fseek($fd, $range);
    }
  } 
  $content = fread($fd, filesize($filename));
  fclose($fd);
  if($range)
  {
    header("HTTP/1.1 206 Partial Content");
  }
  else
  {
    header("HTTP/1.1 200 OK");
  }
  header("Content-Disposition: attachment; filename=$fn");
  header("Last-Modified: $ftime");
  header("Accept-Ranges: bytes");
  header("Content-Length: ".($fsize-$range));
  header("Content-Range: bytes $range-".($fsize -1)."/".$fsize);
  header("Content-type: application/octet-stream");
  print $content;
Проблема в следующем: когда начинаем качать вылетает ошибка сервера (500 Internal Server Error) и в логах сервера появляется строка:
malformed header from script. Bad header=HTTP/1.1 200 OK: php.exe
или
malformed header from script. Bad header=HTTP/1.1 206 Partial Content: php.exe
Не подскажете, как исправить?
Заранее спасибо.
 

StUV

Rotaredom
у меня твой скрипт работает
попробуй поставить apache 1.3.xx
(ибо ...)

p.s.: $fn - это что ? (очепятка ?)
 

GA$

Guest
Исправь HTTP/1.1 на HTTP/1.0, и можеш заголовки коротко посылать (так header("HTTP/1.0 206")) Апаче сам добавляет что не хватает.
 

mvf

Guest
Все равно ошибка сервера 500 и malformed header from script. Bad header=HTTP/1.0 200: php.exe
 

Profic

just Profic (PHP5 BetaTeam)
поставить php как модуль или не посылать http.1.[01], но последнее черевато недокачкой
 

mvf

Guest
Переставил я апач (поставил 1.3.28) все заработало как часы!
Но появилась новая проблема - все строки, которые php выдергивает из БД (MSSQL Server 2K), в другой кодировке, почему-то, показываются (CP866 а не CP1251)...
Не подскажете как с таким бороться?
 
Сверху