![如何为 Web 服务器生成的进程设置环境变量?](https://linux22.com/image/544205/%E5%A6%82%E4%BD%95%E4%B8%BA%20Web%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%94%9F%E6%88%90%E7%9A%84%E8%BF%9B%E7%A8%8B%E8%AE%BE%E7%BD%AE%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%EF%BC%9F.png)
在我的设置 (debian etch、lighttpd) 中,我认为我的一个网站正在通过 PHP 调用一个程序进行一些图像处理。我想通过设置环境变量来更改此程序的行为,最好不要更改 Web 应用程序。
怎么做?=)
为 www-data 用户拥有的所有进程设置环境变量也是可以的,但我不确定在这种情况下是否会尊重 .bashrc(?) 中的条目。
谢谢!
答案1
由于你正在使用 lighttpd快速CGI,只需使用箱环境在 lighttpd 设置中。
## 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"
))
)
答案2
您可以为该程序构建一个包装脚本,将环境设置添加到其中,然后运行包装脚本而不是原始程序。
#!/bin/sh
ENV=... /path/to/program
答案3
任何环境变量都可以通过 setenv 模块暴露给 php,
例如:
server.modules += ( "mod_setenv" )
setenv.add-environment = ( "PATH" => env.PATH )
答案4
如果你将它放入 lighttpd 初始化脚本中它可能会起作用:
export MYVAR="something"
在脚本顶部或 start() 函数内部