我正在尝试在手动安装 TeX Live 2012 后为我的 Apache 用户 ( )添加/usr/local/texlive/2012/bin/x86_64-linux
到环境中。PATH
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"
将此路径包含到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
我不明白这个问题的根源,并感谢任何帮助。
答案1
我遇到了类似的问题,在运行 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 新手。
不确定这是否正是您想要实现的,但希望它能有所帮助。