Avatar billede poull Nybegynder
18. april 2008 - 16:03 Der er 12 kommentarer

Python, cgi og popen3

Jeg forsøger at fange output til stdout for et program kaldet quicktree fra et cgi script skrevet i python. Quicktree er følgende program http://www.sanger.ac.uk/Software/analysis/quicktree/

Følgende virker fint når jeg kører det direkte med python:
import os
f = os.popen3("python -V", "r")
print f[2].readlines()
f = os.popen3("path/quicktree -h", "r")
print f[2].readlines()

Men hvis jeg kører det som cgi så virker kun python -V og ikke quicktree. Jeg får ikke nogen fejl, blot intet output.

Det skal siges at det er version 2.4.4 af python når jeg selv kalder og 2.2.3 som cgi scriptet kører.

Nogle bud på hvorfor der er en forskel?
Avatar billede arne_v Ekspert
18. april 2008 - 16:13 #1
Et klassisk spoergsmaal: har det brugernavn som CGI scripts afvikles under adgang til
quicktree ?
Avatar billede poull Nybegynder
18. april 2008 - 16:57 #2
Jeg har prøvet at give fuld adgang til quicktree for alle og det hjælp ikke. Hvis jeg ikke give korrekte rettigheder får jeg desuden Permission denied som output.
Avatar billede bauerdata Nybegynder
19. april 2008 - 13:07 #3
Avatar billede bauerdata Nybegynder
19. april 2008 - 13:18 #4
#!/usr/bin/env python
import cgitb; cgitb.enable()
import os
print "Content-Type: text/html"    # HTML is following
print                              # blank line, end of headers
print "<TITLE>CGI script output</TITLE>"
print "<H1>This is my first CGI script</H1>"
print "Hello, world!"

f = os.popen3("python -V", "r")
print f[2].readlines()

f = os.popen3("/extradisk/Downloads/quicktree_1.1/bin/quicktree -h", "r")
print f[2].readlines()
Avatar billede poull Nybegynder
19. april 2008 - 13:27 #5
bauerdata > Dit eksempel giver stadig intet output fra quicktree. Men hvis du rent faktisk har testet det med quicktree og det virker for dig, må det have noget at gøre med min version af python vel?
Avatar billede bauerdata Nybegynder
19. april 2008 - 13:33 #6
du kunne skrive
#!/usr/bin/env python2.4

for at sikre dig at det er 2.4 der kører.
Avatar billede poull Nybegynder
19. april 2008 - 13:41 #7
Selv med den linie udskrives der version Python 2.2.3. Det er ikke en server jeg selv har direkte adgang til. Tror du det er versionen af python eller kunne det være nogle indstillinger et andet sted?
Avatar billede bauerdata Nybegynder
19. april 2008 - 14:22 #8
Hmm. Det virker for mig med begge python versioner.
Det kan være opsætning af php serveren.
Måske giver den ikke adgang til det sted du har lagt quicktree ?
Har din udbyder en hotline ?
Jeg giver op nu :-/
Avatar billede bauerdata Nybegynder
19. april 2008 - 14:36 #9
ps. Denne linie giver ikke den python som du kører cgi scriptet med.
f = os.popen3("python -V", "r")

Brug
import sys
print "<br>", sys.version
Avatar billede poull Nybegynder
19. april 2008 - 15:05 #10
Er ret sikker på jeg har adgang til at udføre programmet da jeg har kørt andre før hvor jeg blot ikke behøvede at fange output. Min udbyder er www.daimi.au.dk så kan da prøve at tage en snak med dem, ville bare se om der var noget jeg kunne gøre først. :)
Avatar billede arne_v Ekspert
19. april 2008 - 19:34 #11
Jeg kender ikke quicktree, men hvis det program skal tilgå nogle directories eller filer
så skal det brugernavn som CGI scripts afvikles under også have adgang til dem.
Avatar billede poull Nybegynder
19. april 2008 - 19:55 #12
arne_v > Når man kører det med -h eksempelvis udskrives der blot hjælp til hvilke argumenter programmet tager. Så tror ikke det er tilfældet.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester