我有一个小型开发环境,其中的 PHP 脚本仅包含以下内容:
哪个用户.php
<?php var_dump( exec('whoami') ); ?>
当我尝试通过 CLI 执行此“脚本”时,发生了以下情况:
ubuntu@dev:/var/www/html/$ php whichuser.php
string(4) "root"
但是,如果我按如下方式运行命令,我会得到不同的输出:
ubuntu@dev:/var/www/html/$ /usr/bin/php whichuser.php
string(6) "ubuntu"
我想这是我的 PATH 设置的问题,它们看起来如下:
ubuntu@dev:/var/www/html/$ echo $PATH
/home/ubuntu/bin:/home/ubuntu/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/bin/php:/snap/bin:/home/ubuntu/.composer/vendor/bin:/usr/bin/php
它可能看起来有点奇怪,因为我一直在尝试自己解决这个问题。
有人可以提供一些建议吗?
如果问题不清楚,我正在尝试让 CLI 命令php
以当前登录用户的身份运行,这是应该的。
编辑1
我已根据您的建议运行以下命令:
ubuntu@dev:/var/www/html/$ ls -l $( type -a -p php)
lrwxrwxrwx 1 root root 21 Jan 22 06:57 /usr/bin/php -> /etc/alternatives/php
我不确定这个符号链接是否是问题所在。这能让我们了解到底发生了什么吗?
编辑2
由于另一个建议,我还运行了以下命令:
ubuntu@dev:/var/www/html/$ type -a php
php is aliased to `sudo php'
php is /usr/bin/php
看起来那条别名线是罪魁祸首。我认为它不应该是那样的?
编辑 3-解决方案
感谢@wjandrea 提供的提示,我能够在 找到 bash 别名文件/home/ubuntu/.bash_aliases
。
其中有一个我删除的别名指令。然后我重新登录,php
一切如预期。
/usr/bin/php
我还从我的变量中删除了该行,PATH
因为它不应该存在。
@wjandrea,如果你想正确回答这个问题,我会把你的回答标记为解决方案,并在适当的时候给予你赞扬。
答案1
该php
命令被别名为sudo php
。
我编辑了我的/home/ubuntu/.bash_aliases
文件并删除了别名记录。
之后重新登录解决了问题。