【发布时间】:2016-04-27 13:06:56
【问题描述】:
我正在尝试编写一个脚本来检查特定目录是否存在于当前通过 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
【问题讨论】:
-
“当前登录用户”是什么意思?
whoami将返回运行 apache 的用户,而不是您在站点上登录的用户。 -
@DarkBee, echo shell_exec("whoami");正在返回 ramratan 而不是 nginx 用户。
-
@DarkBee 是正确的。我怀疑您是否将目录名与登录的用户名相同?在这种情况下,安装了 shell_exec("whoami"),你可以做 chdir("/home/".$loggedinUserName);
-
php -a 交互式 shell php > $logedin = shell_exec("whoami"); php > 回声 $logedin; ramratan php > $path = "/home/".$logedin; php > 回声 $path; /home/ramratan php > echo shell_exec("pwd"); /home/ramratan/knexus-codebase php > chdir($path); PHP 警告:chdir():第 1 行的 php shell 代码中没有这样的文件或目录 (errno 2) PHP 堆栈跟踪:PHP 1. {main}() php shell 代码:0 PHP 2. chdir() php shell 代码: 1 php > 回声 shell_exec("pwd"); /home/ramratan/knexus-codebase php > echo $path; /home/ramratan
-
我终于找到了解决方案,有一个新行,我使用 trim 作为 whoami 路径,它可以工作! chdir("/home/".trim(shell_exec("whoami")));回声 shell_exec("密码"); /home/ramratan
标签: php linux shell ubuntu home-directory