Автор Тема: запись в файл + редирект  (Прочитано 2428 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Eva

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 9
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
запись в файл + редирект
« : 27 Января 2005, 10:34:52 »
Возникла следующая проблема.

Пользователь заполняет форму -> запускается скрипт.

В скрипте:

1. выполняется upload файла:

@parts = split(/\\\\/,$filename);
$file=@parts[(scalar @parts) - 1];
open (UFILE,">$imgurl$file");
binmode(UFILE);
flock(UFILE,2);
while ($bytesread=read($filename,$buffer,1024)) { print UFILE $buffer; }
close(UFILE);
close $filename;


2. редактируется некий текстовый файл:

open (OLD,"< $old");
open (NEW,"> $new");
select(NEW);
while()
{
...
print NEW $_;
}
close(OLD);
close(NEW);
rename($new,$old);


3. выполняется редирект

print "Status: 302\\n";
print "Location: $url\\n\\n";


В результате в error_log появляется ошибка "Premature end of script headers".

Что в данном случае не так?
Как в одном скрипте сделать запись в файл и сразу после этого - редирект? Или это невозможно в принципе?

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
запись в файл + редирект
« Ответ #1 : 27 Января 2005, 10:49:58 »
Цитировать
Eva:
В результате в error_log появляется ошибка "Premature end of script headers".

Что в данном случае не так?

Цитировать
Eva:
select(NEW);

поток вывода по умолчанию стоит вернуть в STDOUT
т.е.
select STDOUT;
print "Status: 302\\n";
print "Location: $url\\n\\n";

Кстати, в вашем скрипте

Цитировать
Eva:
open (NEW,"> $new");
select(NEW);
while()
{
...
print NEW $_;

select не нужен, т.к. вы все равно используете дескриптор. Т.е. можете просто смело убрать
 select(NEW);
и все должно быть нормально
 в исканиях.

Оффлайн Eva

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 9
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
запись в файл + редирект
« Ответ #2 : 27 Января 2005, 11:59:21 »
Цитировать
Green Kakadu:
select не нужен, т.к. вы все равно используете дескриптор. Т.е. можете просто смело убрать
select(NEW);
и все должно быть нормально


Спасибо огромное!

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28