RE: [GRASS5] Grass with PHP (newbie question)

Glynn,

Thanks for your help. The one thing that helped the most was the stderr
redirect :slight_smile: I was able to see what was going wrong and fix it. It turns
out, the mapset directory/subdirectories were not owned by the username
under which the webserver runs. I changed that and viola! It works like a
champ! Thanks ever so much.

- sharyn

-----Original Message-----
From: Glynn Clements [mailto:glynn.clements@virgin.net]
Sent: Tuesday, August 17, 2004 6:48 AM
To: Namnath, Sharyn
Cc: Grass5 list (grass5@grass.itc.it)
Subject: RE: [GRASS5] Grass with PHP (newbie question)

Namnath, Sharyn wrote:

> Thanks for your reply. Yes, I do mean running GRASS programs from a PHP
> script via "system" calls. I've been playing with setting the
environment
> variables, but it still doesn't work. I tried doing a simple version
call
> and piping it into a file. The file gets created, but there is nothing
> inside of it. It just creates a zero-length file.
>
> Here is the code I'm using :
>
> <?php
> putenv("GISBASE=/Applications/Grass/grass53");
> putenv("GISRC=/Users/administrator/.grassrc5");
> putenv("GRASS_LOCATION=$location");
> putenv("GRASS_PNGFILE=/Users/administrator/Sharyn.png");
> putenv("DYLD_LIBRARY_PATH=/Applications/Grass/grass53/lib");
> putenv("GRASS_TRUCOLOR=TRUE");
> putenv("GRASS_PNG_COMPRESSION=0");
>
> system("env > /Users/administrator/Sites/click/environment_vars.txt");
>
> system("/Applications/Grass/grass53/bin/g.version >
/Users/administrator/Sites/click/version_info.txt");
> ?>

Have you checked the server/PHP logs for error messages?

The attempt to run g.version may result in error messages being
written to stderr. I don't know how mod_php handles this, but anything
written to stderr by CGI scripts usually end's up in Apache's
error_log file.

Alternatively, you could redirect stderr directly, e.g.:

system(".../g.version > .../version_info.txt 2> .../version_errors.txt");

> The environment variables are echoed to the environment_vars.txt file
just
> fine :

>
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/libexec:/System/Library/CoreServic
es

Yuo also need to add $GISBASE/bin and $GISBASE/scripts to PATH; some
GRASS programs run other GRASS programs/scripts; this will fail if
those directories aren't in $PATH.

--
Glynn Clements <glynn.clements@virgin.net>