web-dev-qa-db-fra.com

Ajouter le chemin d'accès à la variable d'environnement PATH pour www-data

J'essaie d'ajouter /usr/local/texlive/2012/bin/x86_64-linux à l'environnement PATH pour mon utilisateur Apache (www-data) après l'installation manuelle de TeX Live 2012.

J'ai édité mon /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"

d'inclure ce chemin dans ma variable d'environnement PATH pour l'ensemble du système pour tous les utilisateurs.

Cependant, si j'exécute Sudo -u www-data printenv PATH je ne reçois que:

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

Je ne comprends pas la source de ce problème et je n’apprécie aucune aide.

6
DigNative

J'ai eu un problème similaire: j'avais besoin d'une exportation spécifique pour www-data à utiliser lors de l'exécution de la commande PHP exec et j'ai réussi à bricoler cette solution:

  • Éditer /etc/Apache2/envvars:

    Sudo nano /etc/Apache2/envvars
    
    • Ajoutez votre exportation à la fin du fichier et enregistrez-le.

      export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/texlive/2012/bin/x86_64-linux"
      
    • Redémarrez Apache:

      Sudo service Apache2 restart
      

Maintenant, si vous exécutez le code PHP suivant

<?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);
?>

Vous devriez voir votre chemin environnemental tel que défini dans le fichier. Il semble qu'Apache crée des commandes sous www-data en utilisant uniquement le contenu de ce fichier de configuration, et non à partir des fichiers de type bash.bashrc, etc. Je ne peux pas dire avec certitude parce que je suis nouveau sur Linux.

Vous ne savez pas si c'est exactement ce que vous essayez d'atteindre, mais espérez que cela vous aidera.

9
Del Hyman-Jones

Votre /etc/environment n'a pas besoin de l'instruction export devant les paires clé/valeur. Comme indiqué dans le wiki :

Ce n'est pas un fichier de script, mais plutôt une expression d'affectation, une par ligne.

Voir cette autre question sur le fonctionnement du format.

1
user54813

https://help.ubuntu.com/community/EnvironmentVariables sous "Variables d'environnement à l'échelle du système", la première note répondra à votre question.

0
dusty