2013-07-14 51 views
0

這是我的代碼至今如何使用LAMP服務器通過php網站關閉我的系統?

網站:

<?php 
if ($_POST['action']=="Shutdown") { 
    $test=shell_exec("touch /scripts/shutdown.sh"); 
} 
?> 

shutdown.sh:

#!/bin/sh 
if [ -f "/tmp/shutdown" ] 
then 
    rm -f /tmp/shutdown 
    /sbin/shutdown now 
fi 

筆者粗略上心從http://ubuntuforums.org/但是,當我上運行PHP腳本我的本地主機,它不顯示?

問題如何使用LAMP服務器通過php網站關閉我的系統?

在此先感謝!

+0

「觸摸」 不執行文件(http://www.manpagez.com/man/1/touch/)。如果你想執行你的shell腳本,你應該執行shell_exec(「/ scripts/shutdown.sh」);.確保腳本的路徑是正確的。 – Cromax

+0

需要指出的是,這可能會成爲Web應用程序中的一個主要安全問題。 –

回答

0

無需創建一個腳本,你可以這樣做:

shell_exec('sudo /sbin/shutdown -h now'); 
+0

我喜歡,我不必使用外部文件。但我複製/粘貼''之間的代碼'它不顯示操作在我的本地主機網站,這是運行PHP! – blade19899

0

touch只更新文件的修改時間,它不會執行該腳本。

您需要做的是給用戶PHP/web服務器進程作爲執行shutdown命令的權限運行,該權限通常保留給root用戶,而不是普通的web進程。最好的方法可能是通過sudoers文件,給用戶(可能是www-data左右)通過exec()執行sudo shutdown的許可,而不需要密碼提示。閱讀您的系統的man sudoers配置。要特別小心,不要超出這個權限或以其他方式搞砸你的sudoers配置。

sudoers文件需要像一個條目:

www-data ALL=NOPASSWD: /sbin/shutdown 

同樣,閱讀了關於man sudoers,以確保你在這裏做什麼。只有使用visudo才能編輯sudoers文件,以確保它不會混亂。

然後:

exec('sudo /scripts/shutdown.sh'); 
相關問題