Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Calling a method inside CGI script using system calls

by Anonymous Monk
on Sep 28, 2000 at 18:50 UTC ( [id://34398]=perlquestion: print w/replies, xml ) Need Help??

Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question: (cgi programming)

When I call the run_actuals method in Unix Server. It ran a file named web.template and output the result to the file web.template.output. This is exactly what i typed in unix server:
( /GPP/bin/run_actuals web.template & )
in case you wanted to know, the file web.template is in cgi-bin. It works perfect. But I could not run the same method from inside my cgi script. The command I gave to call and run the file is this:
system("/GPP/bin/run_actuals /GPP/web/cgi-bin/web.template");
I moved the web.template file away from cgi-bin and tried to run it again. but I still could run the method inside my CGI script.
I don't understand why I can run the same method manually on the Unix Server, but I cannot run it from my CGI script...
Thanks in advance, if you know the answer

Originally posted as a Categorized Question.

Replies are listed 'Best First'.
Re: Calling a method inside CGI script using system calls
by Fastolfe (Vicar) on Sep 28, 2000 at 19:08 UTC
    I would check some of the following:
    • Ownership and/or permissions issues
      Just because you're able to telnet in and execute a program, or read a certain file, doesn't mean that your web server will be able to do the same. Typically web servers run as a restricted user (such as "nobody") so that they can't be tricked into overwriting files in important places, or reading something they shouldn't be able to read. Check to be sure your script has appropriate permissions (typically octal 755) to be run by the general public. Perl scripts should be executable *and* readable.
    • Current working directory
      Probably not an issue in this case, since your web.templates file is in your cgi-bin directory and you're explicitely specifying the path to your other binary. In many cases, though, this is an oversight. CGI scripts are typically executed with a CWD of the CGI directory.
    • Environment settings
      If your script depends upon certain environment settings to execute correctly, be sure those are set up or worked around in your CGI script. Specifically, if your script executes other apps or programs in your path, be sure your PATH is set up correctly (and explicitely, don't just append) to locate these other scripts, or specify an absolute path to the other binary you wish to execute.
    • If all else fails, check your error logs
      Most binaries print things to STDERR when they fail. If this is running under your CGI script, you may not see the error messages in your browser (though if you're using the CGI module, check out CGI::Carp).
Re: Calling a method inside CGI script using system calls
by Jouke (Curate) on Sep 28, 2000 at 19:03 UTC
    I presume it has something to do with the permissions-thing. The user under which the script runs is not the same as your user when you manually run the program.

    You should ajust the permissions for the program and the template it uses...

Re: Calling a method inside CGI script using system calls
by Anonymous Monk on Sep 28, 2000 at 23:02 UTC
    I changed all the dirctories and files that my program uses to 777. But it is still not working

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://34398]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others contemplating the Monastery: (6)
As of 2024-04-23 18:15 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found