Can't execute shell commands in CGI

It is necessary to execute linux command in CGI(apache)

def cmd(com) system("#{com}>log.log") end cmd("pwd")
There isn’t errors but log.log is empty
Else:

def cmd system("pwd>log.log") end cmd
there isn’t result too.

Luckystr Luckystr wrote:

It is necessary to execute linux command in CGI(apache):

def cmd(com)

system("#{com}>log.log")
end
cmd(“pwd”)

There isn’t errors but log.log is empty
Else:

def cmd
system(“pwd>log.log”)
end
cmd

there isn’t result too.

7stud – wrote:

Luckystr Luckystr wrote:

It is necessary to execute linux command in CGI(apache)

def cmd(com) system("#{com}>log.log") end cmd("pwd")
There isn’t errors but log.log is empty
Else:

def cmd system("pwd>log.log") end cmd
there isn’t result too.

  1. There aren’t any code tags here. You can just post your code and the
    indenting will be preserved.

  2. Where is log.log located in your Apache directory structure? The
    correct path to that file needs to be specified in your cgi script.

  3. Check your apache error logs located here:

/logs/error_log

and see what the last few lines say. It may say something like:

log.log: Permission denied

In that case, you’ll need to change the permissions for log.log to give
‘others’ write privileges, so that your script can write to log.log,
something like this:

$ sudo chmod o+w /full/path/to/log.log

errorlog:
sh: log.log: Permission denied

The path log.log can be correct since “>” creates a file if it does not
exist.
But just in case, I checked path in script make access pattern 0777.
Outgoing from logfile, I think that there is error because user “apache”
doesn’t have shell.
I tried to make apache’s shell by “adduser” by “root” but linux said
that it’s impossible.

Hi,

Am Dienstag, 18. Aug 2009, 05:46:54 +0900 schrieb Luckystr Luckystr:

errorlog:
sh: log.log: Permission denied

Redirect $stderrr, too. Direct it into /tmp to avoid access rights
problems while you’re testing.

Bertram

Luckystr Luckystr wrote:

It is necessary to execute linux command in CGI(apache)

def cmd(com) system("#{com}>log.log") end cmd("pwd")
There isn’t errors but log.log is empty
Else:

def cmd system("pwd>log.log") end cmd
there isn’t result too.

  1. There aren’t any code tags here. You can just post your code and the
    indenting will be preserved.

  2. Where is log.log located in your Apache directory structure? The
    correct path to that file needs to be specified in your cgi script.

  3. Check your apache error logs located here:

/logs/error_log

and see what the last few lines say. It may say something like:

log.log: Permission denied

In that case, you’ll need to change the permissions for log.log to give
‘others’ write privileges, so that your script can write to log.log,
something like this:

$ sudo chmod o+w /full/path/to/log.log

Luckystr Luckystr wrote:

It is necessary to execute linux command in CGI(apache)

def cmd(com) system("#{com}>log.log") end cmd("pwd")
There isn’t errors but log.log is empty

Try:
system(“pwd >/tmp/log.log”)

Brian C. wrote:

Luckystr Luckystr wrote:

It is necessary to execute linux command in CGI(apache)

def cmd(com) system("#{com}>log.log") end cmd("pwd")
There isn’t errors but log.log is empty

Try:
system(“pwd >/tmp/log.log”)

thank all, and thank you, Brian C… /tmp/log.log has pwd

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs