On Mon, 15 Jun 2009, Valentin Bud wrote:
On Mon, Jun 15, 2009 at 3:16 PM, Pieter Donche <pieter.don...@ua.ac.be>
wrote:
On Mon, 15 Jun 2009, Robert Huff wrote:
Pieter Donche writes:
How can one change the PATH for the
user www ?
to include e.g. /usr/local/bin
In /etc/passwd the entry now is:
www:*:80:80:World Wide Web
Owner:/nonexistent:/usr/sbin/nologin
Start by reading the section 5 man page for
"passwd".
Could you provide a little more detail about
what's breaking
and why you think this user's path is involved?
Robert Huff
Some users on my system run scripts in their webpages. If they specify
commands (e.g.) 'python', it is not found, unless it is specified as
'/usr/local/bin/python', since the Apache runs in an environment which
has as PATH: (as can be seen from phpinfo() output)
/sbin:/bin:/usr/sbin:/usr:bin only.
How can one make the PATH that Apache httpd deamon will use
be a different path? and where exaclty does it get
/sbin:/bin:/usr/sbin:/usr:bin from
in the first place?
I could try specifying in /usr/local/sbin/apachectl 's Bourne shell
script:
PATH=/sbin:/bin:/usr/sbin:/usr:bin:/usr/local/sbin:/usr/local/bin
export PATH
but wouldn't this be set back to the original at an Apache update?
root has a better path:
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bi
n:/root/bin
how could I have httpd have the same path?
Hello Pieter,
I guess you are looking for apache's SetEnv directive:
http://httpd.apache.org/docs/1.3/mod/mod_env.html#setenv
(I use apache 2.2.11)
1. I noticed that when I do a
# apachectl graceful
from within a root shell, then the PATH env. var. for Apache Environment
as reported by phpinfo() is equal to the PATH setting of my root user.
(/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/root/bin)
Probably when rebooting the machine, PATH will be set to a very limited
/sbin:/bin:/usr/sbin:/usr/bin (where does this come from?)
Now I see from reading the apache start-up script /usr/local/sbin/apachectl
that one can create a file with instructions to be executed at
startup of Apache: any file in /usr/local/etc/apache22/envvars.d is
sourced into the start up environment of apache.
This directory was empty for the moment.
So I could put in there a file,
/usr/local/etc/apache22/envvars.d/mysettings
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
export PATH
# apachectl graceful
however this did not change the phpinfo() reported PATH, it remained the
same as my root path
2. I also tried, as you suggested
# vi /etc/httpd.conf
...
SetEnv TEST_ENV_VAR foo-foo
SetEnv PATH /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
(the first SetEnv is just to see if it indeed sets Env. vars.)
# apachectl graceful
The TEST_ENV_VAR foo-foo
is reported
But again PATH remains the same as my root path.
Does this mean when executing # apachectl graceful from within a root shell
PATH will ALWAYS be overridden by the value of PATH of the root shell?
I don't see what rules of precedence acutally apply ...
Anyone can explain me?
And will SetEnv in /etc/httpd.conf also work at boot ???
Or will only /usr/local/etc/apache22/envvars.d/mysettings work at boot ??
Or will none of these work at boot ?
_______________________________________________
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"