Я пытаюсь написать скрипт, чтобы проверить, что какой-то конкретный каталог выйдет или нет, в текущем домашнем каталоге пользователя в сети через 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
not /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');
Версия CLI
для PHP
добавляет переменные среды в $_SERVER[]
. Домашний каталог текущего пользователя можно найти в $_SERVER['HOME']
. Нет необходимости менять какую-либо директорию или запускать любую внешнюю команду.
Протестировал его на OSX и Ubuntu, но я уверен, что он работает с любым дистрибутивом Linux. На данный момент ничего не могу сказать о Windows.
/home/ramratan
без sudo -s, а также печать /home/ramratan
с sudo -s
whoami
вернет, от имени какого пользователя apache работает, а не пользователя, которого вы вошли на свой сайт.