2013-05-08 79 views
-1

我試圖用PHP腳本更改Linux主機名。我可以直接在Linux機器上使用命令主機名使用PHP腳本更改Linux主機名

但是,當我使用下面的PHP語句..它沒有工作。

system('sudo hostname '.trim($Host)); 

請提出解決方案。

+3

我非常懷疑Web服務器用戶(apache/www)將有權訪問這個命令,並且正確如此。您不希望PHP或Web服務器能夠更改系統... – fullybaked 2013-05-08 11:02:41

+1

您爲什麼要更改PHP中的主機名? – RMcLeod 2013-05-08 11:03:08

+0

我正在開發一個具有cPanel功能 – KiranD 2013-05-08 11:09:39

回答

3

假設你的Apache用戶無需輸入密碼(其中,順便說一句,將是一個巨大的安全漏洞,所以請不要做)運行sudo命令你可以這樣做:

exec("sudo hostname " . $hostname); 

爲了確保您www-user能做到這一點,有以下行編輯/etc/sudoers

www-user ALL=NOPASSWD: /bin/hostname 

什你試圖通過改變主機名來實現,你可能會發現,你可以做到另一種更安全的方式。 對於閱讀此內容的任何人,我完全不建議您按照這些說明進行操作,您將通過升級www-user帳戶的知識來打開您的服務器,以防止潛在的傷害。

+0

這沒有工作的應用程序..可能是一個權限問題? – KiranD 2013-05-08 11:11:14

+0

這可能是您的www用戶不在'sudoers'中。我真的不建議在生產環境中這樣做。 – 2013-05-08 11:11:50

+0

我明白安全問題..把它放在一邊.. www數據被添加到visudo ..但它仍然無法正常工作。 – KiranD 2013-05-08 11:13:50