如何将PHP中的目录更改为当前登录的用户路径
我正在尝试编写脚本来检查特定目录是否通过PHP退出或不在当前登录用户的主目录中。如何将PHP中的目录更改为当前登录的用户路径
当在终端我使用
cd ~
pwd
它显示/home/ramratan
。
但是当我通过PHP尝试同样的事情,像下面
chdir("~");
PHP Warning: chdir(): No such file or directory (errno 2)
in php shell code on line 1
PHP Stack trace:
PHP 1. {main}() php shell code:0
PHP 2. chdir() php shell code:1
我也试过下面
chdir("/home");
echo shell_exec("pwd");
它显示/home
没有/home/ramratan
,如果有人能帮助我什么,我应该chdir("/home")
这样做它返回/home/ramratan
。
我也低于尝试,但没有成功
chdir("/home/".shell_exec("whoami"));
PHP Warning: chdir(): No such file or directory (errno 2)
in php shell code on line 1
PHP Stack trace:
PHP 1. {main}() php shell code:0
PHP 2. chdir() php shell code:1
您可以通过使用whomai
因为你已经写了查找当前用户名。使用该名称在/etc/passwd
中查找与该用户对应的行。从该行cut
出来的家目录信息:
$currentUserHomeDir = exec('grep `whoami` /etc/passwd | cut -d ":" -f6');
这是扩展解决方案,echo打印/家庭/ ramratan没有sudo -s和打印/根与sudo -s –
的CLI
版PHP
把环境变量$_SERVER[]
。当前用户的主目录可以在$_SERVER['HOME']
中找到。无需更改任何目录或运行任何外部命令。
在OSX和Ubuntu上测试它,但我确信它适用于任何Linux发行版。目前无法透露有关Windows的任何信息。
这是简单的解决方案,echo打印'/ home/ramratan'没有sudo -s也用sudo -s打印'/ home/ramratan' –
你是指“当前登录用户”? 'whoami'将以apache运行的用户身份返回,而不是您在网站上登录的用户。 – DarkBee
@DarkBee,echo shell_exec(“whoami”);正在返回ramratan而不是nginx用户。 –
@DarkBee是正确的。我怀疑你是否使目录名称与登录的用户名相同?在那种情况下shell_exec(“whoami”)insted,你可以做chdir(“/ home /".$ loggedinUserName); –