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