【问题标题】:PATH in terminal and in PHP is different终端和 PHP 中的 PATH 不同
【发布时间】:2015-04-04 10:04:46
【问题描述】:

我在终端中有命令 sudo -u www-data echo $PATH 的下一个结果:

/home/denis/node-v0.12.0/bin:/home/denis/node-v0.12.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

如果我运行命令 echo `echo \$PATH`,我会在 PHP 中得到下一个结果:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

终端和 PHP 中的路径不同。我不明白为什么。

【问题讨论】:

  • 检查哪个用户实际运行该 php 脚本。
  • 哪个用户运行什么脚本无关紧要。守护程序不会从登录 shell 启动。除非配置为更改它,否则 Sudo 会继承您当前的环境。

标签: php linux apache


【解决方案1】:

按照给定的字面意思运行命令

sudo -u www-data echo $PATH

$PATH 在执行sudo 之前由您的shell 扩展(并显示您的 $PATH)。但是,如果你正确引用了这个,它可能会被推迟到 sudo 的用户中,并暴露一个不同的问题。

除非您为此做出特殊规定(sudo 的一个选项,可能/可能不起作用),否则在使用 sudo 时,PATH 等环境变量将重置为系统默认值。如需进一步讨论,请参阅

【讨论】:

猜你喜欢
  • 2021-09-18
  • 1970-01-01
  • 2016-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-25
  • 2022-08-10
相关资源
最近更新 更多