2016-01-21 116 views
1

我正在嘗試編寫腳本來檢查特定目錄是否通過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 
+0

你是指「當前登錄用戶」? 'whoami'將以apache運行的用戶身份返回,而不是您在網站上登錄的用戶。 – DarkBee

+0

@DarkBee,echo shell_exec(「whoami」);正在返回ramratan而不是nginx用戶。 –

+0

@DarkBee是正確的。我懷疑你是否使目錄名稱與登錄的用戶名相同?在那種情況下shell_exec(「whoami」)insted,你可以做chdir(「/ home /".$ loggedinUserName); –

回答

0

您可以通過使用whomai因爲你已經寫了查找當前用戶名。使用該名稱在/etc/passwd中查找與該用戶對應的行。從該行cut出來的家目錄信息:

$currentUserHomeDir = exec('grep `whoami` /etc/passwd | cut -d ":" -f6'); 
+0

這是擴展解決方案,echo打印/家庭/ ramratan沒有sudo -s和打印/根與sudo -s –

1

CLIPHP把環境變量$_SERVER[]。當前用戶的主目錄可以在$_SERVER['HOME']中找到。無需更改任何目錄或運行任何外部命令。

在OSX和Ubuntu上測試它,但我確信它適用於任何Linux發行版。目前無法透露有關Windows的任何信息。

+0

這是簡單的解決方案,echo打印'/ home/ramratan'沒有sudo -s也用sudo -s打印'/ home/ramratan' –

相關問題