为 www-data 添加路径到 PATH 环境变量

Dig*_*ive 7 paths environment-variables

手动安装 TeX Live 2012 后,我正在尝试为我的 Apache 用户 ( )添加/usr/local/texlive/2012/bin/x86_64-linuxPATH环境中www-data

我编辑了我的 /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"
Run Code Online (Sandbox Code Playgroud)

将此路径包含在我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
Run Code Online (Sandbox Code Playgroud)

我无法理解这个问题的根源,并感谢任何帮助。

小智 10

我有一个类似的问题,我需要在运行 PHP exec 命令时使用 www-data 的特定导出,并设法拼凑出这个解决方案:

现在,如果您执行以下 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);
?>
Run Code Online (Sandbox Code Playgroud)

您应该会看到文件中设置的环境路径。似乎 apache 仅使用该配置文件的内容而不是来自 bash.bashrc 等类型文件的内容在 www-data 下生成命令?我不能肯定,因为我是 Linux 新手。

不确定这是否正是您想要实现的目标,但希望它有所帮助。


小智 3

/etc/environment不需要export键/值对前面的声明。正如维基百科中所述:

它不是一个脚本文件,而是由每行一个赋值表达式组成。

请参阅有关该格式如何工作的其他问题。