need your helpppp
am 22.06.2006 16:54:27 von Deb.Fang
I have a perl script named try.cgi, which is the action value of a form
containned in
test12.php file.Part of my try.cgi is as following:
#!/bin/perl -w
use strict;
use CGI;
$query=new CGI;
my $nominees=$query->param('n1');
my $nominations=$query->param('n2');
my $leaders=$query->param('n3');
my $followers=$query->param('n4');
my $filename=$query->param('f1');
print $query->header();
exec ("p1.cgi");
print <
.
.
.
p1.cgi is a executable I get from after executing command:
gcc -o p1.cgi p1.c
in unix shell.
And the function of p1.cgi is writing word "welcome" to file op.txt
Also it works fine if I use command "p1.cgi" in unix shell.
but if I executed from test12.php, after I submit the form there, it
goes
to page try.cgi and display the value $nominees, $nominations ......(I
just let
them get printed in section of try.cgi. But it looks like does
not
execute the command exec ("p1.cgi").Coze I can't see word in op.txt
file.
I spent a lot time on this question. Could someone help me?
Thanks a lot!
Re: need your helpppp
am 22.06.2006 17:56:48 von unknown
Debbie523 wrote:
> I have a perl script named try.cgi, which is the action value of a form
> containned in
> test12.php file.Part of my try.cgi is as following:
>
> #!/bin/perl -w
> use strict;
> use CGI;
use CGI::Carp qw{fatalsToBrowser};
my
> $query=new CGI;
>
> my $nominees=$query->param('n1');
> my $nominations=$query->param('n2');
> my $leaders=$query->param('n3');
> my $followers=$query->param('n4');
> my $filename=$query->param('f1');
>
> print $query->header();
>
exec ("pl.cgi") or die "Failed to exec pl.cgi: $!";
>
> print <
>
>
> .
> .
> .
>
END_HTML
>
>
> p1.cgi is a executable I get from after executing command:
>
> gcc -o p1.cgi p1.c
>
> in unix shell.
>
> And the function of p1.cgi is writing word "welcome" to file op.txt
>
> Also it works fine if I use command "p1.cgi" in unix shell.
>
> but if I executed from test12.php, after I submit the form there, it
> goes
>
> to page try.cgi and display the value $nominees, $nominations ......(I
> just let
>
> them get printed in section of try.cgi. But it looks like does
> not
>
> execute the command exec ("p1.cgi").Coze I can't see word in op.txt
> file.
>
> I spent a lot time on this question. Could someone help me?
>
> Thanks a lot!
>
I'm no expert, but ...
It seems to me that the first thing is to figure out why the exec fails.
If you read the documentation (hint: perldoc -f exec) you'll see
something like the code I have inserted. There are differences between
executing a Perl script from the command line and executing it as a CGI
script, which include the setting of the PATH variable, and the
accessability of files in general. Dumping the status of the exec call
will help you diagnose this.
But I predict that you will find a second problem when you get the first
one sorted out, because I predict that when you run try.cgi from the
shell, you will not get the HTML output, except for the headers, if the
exec succeeds. See the documentation on exec for the answer to this one,
too.
Tom Wyant
Re: need your helpppp
am 22.06.2006 18:59:30 von Deb.Fang
harryfmudd [AT] comcast [DOT] net wrote:
>
> I'm no expert, but ...
>
> It seems to me that the first thing is to figure out why the exec fails.
> If you read the documentation (hint: perldoc -f exec) you'll see
> something like the code I have inserted. There are differences between
> executing a Perl script from the command line and executing it as a CGI
> script, which include the setting of the PATH variable, and the
> accessability of files in general. Dumping the status of the exec call
> will help you diagnose this.
>
> But I predict that you will find a second problem when you get the first
> one sorted out, because I predict that when you run try.cgi from the
> shell, you will not get the HTML output, except for the headers, if the
> exec succeeds. See the documentation on exec for the answer to this one,
> too.
>
> Tom Wyant
Tom, thanks for your help and reply. This time after I changed the line
exec ("p1.cgi") to
exec ("p1.cgi") or print "failed to exec p1.cgi: $!";
after execute by browser I got the line :
Failed to exec p1.cgi: No such file or directory
displayed.
I guess you are right, and the browser can't find the file p1.cgi
So then I guess the set of path is wrong.
Could you tell me how I should set the path??
Re: need your helpppp
am 22.06.2006 19:11:19 von Sherm Pendley
"Debbie523" writes:
> I guess you are right, and the browser can't find the file p1.cgi
Browsers don't run CGIs. Servers run CGIs, and forward the output to a
browser (or other user agent).
> So then I guess the set of path is wrong.
> Could you tell me how I should set the path??
Just supply the full path. exec('/path/to/p1.cgi');
But don't forget what I said before - exec() does not do what you're
expecting it to do. Once you get the call to exec() working, you'll
find that nothing seems to happen after p1.cgi runs. Read the docs for
exec() (i.e. perldoc -f exec) to see why, and to see how to fix that.
sherm--
--
Cocoa programming in Perl: http://camelbones.sourceforge.net
Hire me! My resume: http://www.dot-app.org