I am trying to run a simple script which brings up a gnome terminal on the 
user's display. I have created a perl cgi script which calls a shell script 
using a system call. If I run the perl cgi script from the command line, it 
brings up the gnome terminal correctly. If I try running the perl cgi script 
via the Apache web server, I get the following error in 
/var/log/httpd/error_log:

<Date> [error] [client 10.61.8.152] Failed to parse arguments: Cannot open 
display: 10.61.8.152:0.0 ...

The obvious answer would be that I am not setting the DISPLAY environment 
variable or that xhost is not set to allow the display. I have tried setting 
the DISPLAY variable but am specifying the display parameter as argument for 
gnome-terminal in any case. I have used xhost + to ensure it is not restricting 
it but I still get the error.

The perl cgi script call is made with:
my @args=("/tmp/monitor.sh &");
my $status=system("@args");

The monitor.sh shell script call for xterm is made with:
gnome-terminal -display=10.61.8.152:0.0 -geometry=125x24 -hide-menubar 
-title="My title"

I am initially testing this out locally on the apache server system so the 
display address is that of the Apache server. The server has a running Xserver 
and as mentioned, the script works if called from the command line.

I have setup Apache to run as a local user rather than Apache user. The scripts 
are both owned by this same user and have permissions set accordingly. I added 
a command in the shell script to create a text file. When run via the Apache 
server, the file is created with the ownership of the user I specified 
confirming that the shell is being run as the expected user.

I have also tried making the call using ssh with -X option from either the 
cgi-script or the shell script but, despite setting up ssh to allow 
passwordless login for the user in question and again, seeing it run OK from 
command line, I have problems running via Apache server, getting the error:
<Date> [error] [client 10.61.8.152] ssh: connect to host <hostname> port 22: 
Permission denied ...

If I try calling the gnome terminal directly from the perl cgi script, I get 
the same errors stated. I would prefer to start it from the shell script though 
since I want to run other commands from the script too and it would be easier.

Apache info:
Server version: Apache/2.2.15 (Unix)
Server built: Dec 5 2012 04:03:01

Unix info:
Redhat 6.4 x86_64

Any help would be greatly appreciated,
Thanks,
Alvin

Reply via email to