Adicione caminho à variável de ambiente PATH para www-data

5

Estou tentando adicionar /usr/local/texlive/2012/bin/x86_64-linux ao ambiente PATH do meu usuário do Apache ( www-data ) depois de instalar o TeX Live 2012 manualmente.

Eu editei meu /etc/environment

export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/texlive/2012/bin/x86_64-linux"

para incluir esse caminho na variável de ambiente PATH em todo o sistema para todos os usuários.

No entanto, se eu executar sudo -u www-data printenv PATH , estou apenas começando:

# sudo -u www-data printenv PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Eu não entendo a origem desse problema e aprecio qualquer ajuda.

    
por DigNative 21.10.2012 / 17:31

3 respostas

8

Eu tive um problema semelhante em que precisei de uma exportação específica para o www-data para usar ao executar o comando exec do PHP e consegui montar essa solução:

  • Edite o /etc/apache2/envvars :

    sudo nano /etc/apache2/envvars
    
    • Adicione sua exportação ao final do arquivo e salve-a.

      export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/texlive/2012/bin/x86_64-linux"
      
    • Reinicie o Apache:

      sudo service apache2 restart
      

Agora, se você executar o seguinte PHP

<?php
    $descriptorspec = array(
       0 => array("pipe", "r"),  // stdin
       1 => array("pipe", "w"),  // stdout
       2 => array("pipe", "w"),  // stderr
    );
    $process = proc_open('env', $descriptorspec, $pipes, dirname(__FILE__), null);
    $stdout = stream_get_contents($pipes[1]);
    fclose($pipes[1]);
    var_dump($stdout);
?>

Você deve ver seu caminho ambiental como definido no arquivo. Parece que o apache gera comandos em www-data usando o conteúdo desse arquivo de configuração apenas e não dos arquivos de tipo bash.bashrc etc? Não posso dizer com certeza porque sou novo no Linux.

Não tenho certeza se isso é exatamente o que você está tentando alcançar, mas espero que ajude.

    
por Del Hyman-Jones 25.04.2013 / 19:06
1

Seu /etc/environment não precisa da instrução export na frente dos pares de chave / valor. Conforme declarado no wiki :

It is not a script file, but rather consists of assignment expressions, one per line.

Veja esta outra pergunta sobre como o formato funciona.

    
por user54813 12.01.2013 / 23:26
0

link Em "Variáveis de ambiente de todo o sistema", a primeira nota responderá à sua pergunta.

    
por dusty 12.01.2013 / 23:08