Назад | Перейти на главную страницу

Как установить переменную среды для процесса, порожденного веб-сервером?

Я думаю, что в моей настройке (debian etch, lighttpd) один из моих веб-сайтов вызывает программу для некоторых манипуляций с изображениями через PHP. Я хотел бы изменить поведение этой программы, установив переменную среды, желательно без изменения веб-приложения.

Как это сделать? знак равно

Установка переменной environemt для всех процессов, принадлежащих пользователю www-data, тоже подойдет, но я уверен, что запись в, скажем, .bashrc (?) Будет соблюдаться в этом сценарии.

Спасибо!

Поскольку вы используете lighttpd fast-cgi, просто установите его, используя bin-environment в настройках 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"
    ))
)

Вы можете создать сценарий оболочки для программы, добавить в нее параметры среды и запустить сценарий оболочки вместо исходной программы.

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

Это может сработать, если вы поместите его в сценарий инициализации lighttpd:

export MYVAR="something"

поверх скрипта или внутри функции start ()

Любая переменная среды может быть представлена ​​php через модуль setenv
например.:

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