Dig*_*ive 7 paths environment-variables
手动安装 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"
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 的特定导出,并设法拼凑出这个解决方案:
编辑/etc/apache2/envvars:
sudo nano /etc/apache2/envvars
Run Code Online (Sandbox Code Playgroud)
将导出添加到文件末尾并保存。
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)重启阿帕奇:
sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)现在,如果您执行以下 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 新手。
不确定这是否正是您想要实现的目标,但希望它有所帮助。
| 归档时间: |
|
| 查看次数: |
23020 次 |
| 最近记录: |