2012-10-16 2 views
4

У меня проблемы с apache2 на unbuntu (11.04 и 12.04), буферизующие весь вывод cgi до тех пор, пока скрипт не завершится. Если я запускаю тот же скрипт на Centos/rhel 6.2 apache2, он работает нормально.ubuntu apache2 cgi output buffering

#!/usr/bin/perl 

$|=1; 
print "Content-type: text/html\r\n\r\n"; 

print "hi.."; 
sleep 1; 
print "hi.."; 
sleep 1; 
print "hi.."; 
sleep 1; 

Я проверял, что mod_deflate отключен.

Кроме того, это не просто вещь perl, тот же скрипт cgi, написанный в bash, ведет себя одинаково на ubuntu VS centos/rhel.

я схожу с ума здесь, конечно, кто-то столкнулся с этим раньше ...

Спасибо!

+0

Что происходит, когда апач работает ваш сценарий? – Hassan

+0

все распечатывается, когда скрипт завершается. например, если буферизация отключена. – user1750728

ответ

1

Я столкнулся с аналогичной проблемой на Solaris 10, но выяснил, что на самом деле это не проблема апача, а вместо веб-браузера (firefox 15.0.1). (я мог бы проверить это с telnet webserver 80 и говорить простой HTML, ответ показал, что выход действительно не буферный)

я мог бы решить эту проблему для светлячков также путем печати заголовка с Content-Type меты-тегом:

print<<'_EOF_'; 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
</head> 
<body> 
_EOF_ 

Проводник, однако, по-прежнему, кажется, ждет всех данных, прежде чем отображать страницу, другие браузеры у меня нет.

+0

Спасибо, после того, как я изменил оператор типа контента на: print «Content-type: text/html; charset = iso-8859-1 \ r \ n \ r \ n"; это сработало. используя как firefox, так и хром. – user1750728

1

Совместимость с debian/ubuntu (и солярием слишком явно), не указывает набор символов, как на Redhat. Реальное решение состоит в том, чтобы просто определить его.

на убунту, добавьте следующие строки в /etc/apache2/httpd.conf

AddDefaultCharset UTF-8

Wihtout это, браузер кэширует вывод сценария CGI.

+0

Большое вам спасибо! Я искал дни для этого ответа без везения. У меня все еще есть проблема, хотя, похоже, это работает только с Firefox и IE, Chrome по-прежнему буферизует вывод, также я попробовал запустить сценарий «nph», подобный этому, и вывод этого по-прежнему буферизирован. Вы знаете, что может быть причиной этого? – tjwrona1992

0

Для меня это помогает отключить модуль выкачать:

sudo a2dismod deflate 
Смежные вопросы