如何为 Web 服务器生成的进程设置环境变量?

如何为 Web 服务器生成的进程设置环境变量?

在我的设置 (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() 函数内部

相关内容