Como definir uma variável de ambiente para um processo gerado pelo servidor web?

4

Na minha configuração (debian etch, lighttpd), um dos meus sites está chamando um programa para alguma manipulação de imagens via PHP, eu acho. Eu gostaria de mudar o comportamento deste programa, definindo uma variável de ambiente, de preferência sem alterar o aplicativo da web.

Como fazer isso? =)

Configurar a variável ambiental para todos os processos pertencentes ao usuário www-data também seria bom, mas eu tenho certeza se uma entrada em, digamos, .bashrc (?) seria respeitada neste cenário.

Obrigado!

    
por Jens 26.03.2011 / 19:18

4 respostas

5

Como você está usando light-ipd fast-cgi , basta defini-lo usando bin -ambiente dentro das configurações 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"
    ))
)
    
por 27.03.2011 / 03:31
1

Você pode criar um script de wrapper para o programa, adicionar suas configurações de ambiente a ele e executar o script de wrapper em vez do programa original.

#!/bin/sh
ENV=... /path/to/program
    
por 26.03.2011 / 19:24
0

Pode funcionar se você colocá-lo no script de inicialização lighttpd:

export MYVAR="something"

no topo do script ou dentro da função start ()

    
por 26.03.2011 / 19:24
0

Qualquer variável de ambiente pode ser exposta ao php através do módulo setenv
por exemplo:

server.modules += ( "mod_setenv" )
setenv.add-environment = ( "PATH" => env.PATH )
    
por 04.12.2015 / 16:25