13. juni 2005 - 14:14
Der er
5 kommentarer og 1 løsning
Eksekvere program fra apace server
Hej alle! jeg har et program på en Unix maskine, der skal eksekveres med nogle parametre fra en apache server. Når eksekveringen er færdig, skal noget nyt udføres, som afhænger af det programmet har lavet. Jeg har lavet nedenstående kode, og det virker fint hvis jeg eksekverer det med "perl my_script.pl" (system returnerer 0). Hvis jeg kører den fra min apache server, fejler det :-( (system returnerer -1) Nogen der har idéer til hvad der er galt og hvordan jeg får det til at virke? Jeg har også prøvet at lave selv samme i et c - cgi script, men med samme resultat. Løsning med et c script modtages også meget gerne. #######my_script.pl####### #!/usr/bin/perl print "Content-type: text/html\n\n"; print "<HTML><HEAD>"; print "<TITLE>my_script.pl</TITLE>"; print "</HEAD>"; print "<BODY><H2>Excecuting system call...</H2>"; $status = system("my_program my_parameters"); print "Program status: $status"; print "</BODY></HTML>";
Annonceindlæg fra Deloitte
det mest oplagte er at apache-brugeren ikke har rettigheder til at eksekvere programmet (som regel skal de være 755). Jeg vil desuden anbefale at du bruger use CGI; use CGI::Carp qw(carpout); my $query = new CGI; og så istedet for de tre første print sætninger bruger print $query->header; print $query->start_html('my_script.pl');
Som mfalck siger er det sandsynligvis rettighederne. chmod 755 scriptnavn.pl Alternativt, når det er en unixmaskine, hvis scriptet er lavet på en windowsmaskine, er det måske i dosformat. dos2unix scriptnavn.pl Hvis du forsøger begge skal dos2unix benyttes først, da dette også sætter rettighederne
Rettighederne til både mit script of programmet der skal køres er sat til read og execute for alle brugere. Og scriptet er lavet lokalt. Får stadig samme fejl :-( Jeg har lave et c program som scriptet prøver at køre i stedet. C programmet kører blot et "for" loop. Og rettighederne til dette program er sat til 755. System(...) kaldet returnerer stadig -1. Jeg er ret lost :S
har du prøvet at sætte den fulde sti til programmet ind ?
Det var det der skulle til! Den skal jo selvfølgelig have den absolutte sti til programmet!! Tak for hjælpen :-) Smider du et svar mfalck...
Kurser inden for grundlæggende programmering