如何为Web服务器产生的进程设置一个环境variables?

在我的设置(debian etch,lighttpd)中,我的网站之一正在调用通过PHP进行image processing的程序。 我想改变这个程序的行为,通过设置一个环境variables,最好不改变networking应用程序。

这个怎么做? =)

为www-data用户拥有的所有进程设置environemtvariables也是可以的,但是我很喜欢在这个场景中,如果.bashrc(?)中的条目被尊重。

谢谢!

由于您使用的是lighttpd fast-cgi ,只需在lighttpd设置中使用bin-environment进行设置即可。

## Start an FastCGI server for php (needs the php5-cgi package) fastcgi.server = ( ".php" => (( "bin-path" => "/usr/bin/php-cgi", "socket" => "/tmp/php.socket", "max-procs" => 2, "idle-timeout" => 20, "bin-environment" => ( "PHP_FCGI_CHILDREN" => "4", "PHP_FCGI_MAX_REQUESTS" => "10000", ), "bin-copy-environment" => ( "PATH", "SHELL", "USER" ), "broken-scriptfilename" => "enable" )) ) 

您可以为程序构build包装脚本,将环境设置添加到该脚本中,然后运行包装脚本而不是原始程序。

 #!/bin/sh ENV=... /path/to/program 

它可能会工作,如果你把它放在lighttpd初始化脚本:

 export MYVAR="something" 

在脚本的顶部或start()函数内部

任何环境variables都可以通过setenv模块暴露给php
例如:

 server.modules += ( "mod_setenv" ) setenv.add-environment = ( "PATH" => env.PATH )