Avatar billede mikeo Nybegynder
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>";
Avatar billede mfalck Praktikant
13. juni 2005 - 22:19 #1
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');
Avatar billede breum Nybegynder
14. juni 2005 - 09:51 #2
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
Avatar billede mikeo Nybegynder
14. juni 2005 - 11:35 #3
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
Avatar billede mfalck Praktikant
14. juni 2005 - 12:56 #4
har du prøvet at sætte den fulde sti til programmet ind ?
Avatar billede mikeo Nybegynder
14. juni 2005 - 13:04 #5
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...
Avatar billede mfalck Praktikant
15. juni 2005 - 09:17 #6
jeps
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