Форум сайта python.su
							
  0  
								
								Никак не разберусь в чом трабла:
Есть 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!"
Офлайн
							
  0  
								
								Saff
Может, нету нужных прав у скрипта на сервере?
Офлайн
							
  0  
								
								Исключено, с этим точно впорядке
Офлайн
							
  3  
								
								Когда апач выдает 500, полезно заглянуть в логи, часто трейсбек сваливается туда. Что там у тебя?
Офлайн
							
  0  
								
								Premature end of script headers: gsrv.cgi
При этом скрипт нормально выполняется, если в консоли.
Отредактировано (Авг. 21, 2009 17:13:09)
Офлайн
							
  3  
								
								попробуй до вызова popen, сделать sys.stdout.flush() или print proc.stdout.read() убрать…
Офлайн
							
  20  
								
								> причём именно на 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()
Офлайн
							
  3  
								
								bw, после заголовка (Content-Type: text/html), должнен присутствовать перевод строки, обязательно, далее пустая строка .
Офлайн
							
  20  
								
								Ты меня улыбаешь :-).
Тогда зачем дальше идет print “” ? Я подозреваю, что этот print был поставлен с той же целью, что и \n в предыдущем.
..bw
Офлайн
							
  0  
								
								Saff
попробуй после Popen() поставить proc.wait()
Офлайн