web-dev-qa-db-ja.com

www-dataのPATH環境変数にパスを追加します

TeX Live 2012を手動でインストールした後、Apacheユーザー(/usr/local/texlive/2012/bin/x86_64-linux)のwww-dataPATH環境に追加しようとしています。

/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"

すべてのユーザーのシステム全体のPATH環境変数内にこのパスを含めるため。

ただし、Sudo -u www-data printenv PATHを実行すると、次のような結果しか得られません。

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

私はこの問題の原因を理解できず、助けに感謝します。

6
DigNative

PHP execコマンドを実行するときに使用するwww-dataの特定のエクスポートが必要で、このソリューションを一緒にまとめることができるという同様の問題がありました。

  • 編集/etc/Apache2/envvars

    Sudo nano /etc/Apache2/envvars
    
    • エクスポートをファイルの最後に追加して保存します。

      export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/texlive/2012/bin/x86_64-linux"
      
    • Apacheを再起動します。

      Sudo service Apache2 restart
      

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

ファイルに設定されている環境パスが表示されます。 Apacheは、bash.bashrcなどのタイプファイルからではなく、その構成ファイルの内容のみを使用してwww-dataの下にコマンドを生成するようです。私はLinuxが初めてなので、はっきり言えません。

これがまさにあなたが達成しようとしているものであるかどうかはわかりませんが、それが役立つことを願っています。

9
Del Hyman-Jones

/etc/environmentは、キー/値のペアの前にexportステートメントを必要としません。 wiki に記載されているとおり:

スクリプトファイルではなく、1行に1つずつ割り当て式で構成されています。

フォーマットの仕組みについては この他の質問 をご覧ください。

1
user54813

https://help.ubuntu.com/community/EnvironmentVariables 「システム全体の環境変数」の下にある最初のメモで質問に答えます。

0
dusty