Форум сайта python.su
Никак не разберусь в чом трабла:
Есть cgi скрипт, работает через апач.
При его вызове выпадает internal server error, причём именно на subprocess.popen…
Почему?
import os
import subprocess
print "Content-type: text/html\n"
print ""
print "Start...<br>"
try:
proc = subprocess.Popen(['/bin/ls','-l'],stdin=subprocess.PIPE,stdout=subprocess.PIPE)
except Exception,err:
print err
print proc.stdout.read()
print "Done!"
Офлайн
Saff
Может, нету нужных прав у скрипта на сервере?
Офлайн
Исключено, с этим точно впорядке
Офлайн
Когда апач выдает 500, полезно заглянуть в логи, часто трейсбек сваливается туда. Что там у тебя?
Офлайн
Premature end of script headers: gsrv.cgi
При этом скрипт нормально выполняется, если в консоли.
Отредактировано (Авг. 21, 2009 17:13:09)
Офлайн
попробуй до вызова popen, сделать sys.stdout.flush() или print proc.stdout.read() убрать…
Офлайн
> причём именно на subprocess.popen
Т.е. без popen всё работает?
Так будет логичнее, как считаешь:
try:
proc = subprocess.Popen(['/bin/ls', '-l'], stdin = subprocess.PIPE, stdout = subprocess.PIPE)
except Exception, err:
print err
else:
print proc.stdout.read()
Офлайн
bw, после заголовка (Content-Type: text/html), должнен присутствовать перевод строки, обязательно, далее пустая строка .
Офлайн
Ты меня улыбаешь :-).
Тогда зачем дальше идет print “” ? Я подозреваю, что этот print был поставлен с той же целью, что и \n в предыдущем.
..bw
Офлайн
Saff
попробуй после Popen() поставить proc.wait()
Офлайн