Configurando $ PATH para o usuário do web server

6

Eu tentei adicionar $PATH para todos os usuários, incluindo o usuário do servidor Web (ou seja, www-data) com métodos diferentes, como edição /etc/profile , /etc/environment etc. Em todos os casos, ele funciona no terminal, mas não com comandos shell dentro do PHP.

Por exemplo, echo $PATH no terminal mostra os caminhos disponíveis, incluindo os que adicionei; mas, shell_exec('echo $PATH') no PHP mostra os caminhos originais sem o caminho que eu adicionei: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Como posso definir o $ PATH globalmente para ser usado pelo usuário do servidor web? Eu estou usando o nginx no Ubuntu / Debian.

Eu tentei editar /etc/init.d/nginx , acho que este é o ponto de partida para o nginx, mas nenhum efeito.

    
por Googlebot 18.08.2012 / 18:28

1 resposta

7

Você não diz qual distro, mas meu palpite é Ubuntu ou similar.

O PATH padrão, definido em /etc/init.d/apache2 é /usr/local/bin:/usr/bin:/bin

Nos meus sistemas Ubuntu existe um arquivo /etc/apache2/envvars . Você pode definir o PATH neste arquivo e quando você reiniciar o Apache, esse será o caminho usado.

PATH=$PATH:/your/addtional/path

Para o nginx, você pode passar o caminho que deseja como fastcgi_param

location ~ \.php$ {
    include /etc/nginx/fastcgi.conf;
    fastcgi_pass unix:/tmp/php.socket;
    fastcgi_param PATH /usr/local/bin:/usr/bin:/bin:/your/path;
}

Você precisa especificar todo o PATH que deseja

Atualize ainda mais.

Eu configurei o php como fcgi (graças a @MichaelHampton para alguma discussão de chat) e descobri que o caminho que system(...); vê é o definido no seu script de inicialização do php (no meu caso / etc / init. d / php-fcgi).

Depois de muita pesquisa, encontrei isso que leva à solução

env[PATH]=/your/custom/path

em php5-fpm.conf ou como @Ali aponta no script de início php5-fpm .

    
por 19.08.2012 / 14:13