我能夠從外殼使用命令./del_user.sh
無法使用PHP和bash腳本
del_user.sh直接刪除Linux用戶刪除的Linux用戶是如下
#!/bin/sh
userdel username
當我運行這個腳本從PHP頁面,它不起作用。
echo shell_exec('./del_user.sh');
這兩個文件都在同一個目錄中。
可能是什麼問題?
我能夠從外殼使用命令./del_user.sh
無法使用PHP和bash腳本
del_user.sh直接刪除Linux用戶刪除的Linux用戶是如下
#!/bin/sh
userdel username
當我運行這個腳本從PHP頁面,它不起作用。
echo shell_exec('./del_user.sh');
這兩個文件都在同一個目錄中。
可能是什麼問題?
另外,你還沒有說明你的目標是什麼或者這個腳本應該做什麼。這是一些用戶管理應用程序的一部分,還是僅僅是一個小任務的一次性?
回答: 要啓用此功能,您必須讓Apache具有sudo功能,以便獲得暫時提升的權限。您可能需要根據您的操作系統做一些搜索操作,但這個鏈接提供了一些關於如何在Ubuntu中執行操作的指導:Ubuntu Forums
我也建議不要使用bash腳本,因爲它並不是真的有必要做這個。您可以使用接受命令行參數的PHP腳本。所以在你的主要腳本中,你可以有這樣的東西:shell_exec('php /path/to/del_user.php username');
然後在del_user.php你會有類似shell_exec('userdel '.$argv[1]);
。關於命令行參數的更多信息可以在這裏找到:$argv
最後,你可以把它直接放到你的主腳本中,而不是使用shell_exec兩次。換句話說,只需使用shell_exec('userdel '.$username);
而不是調用腳本。由於Apache將能夠sudo,因此應該能夠直接執行此操作。
'www-data'用戶是否有權限運行該腳本? – Waygood 2013-05-01 13:17:40
它的權限,你可能能夠刪除一個用戶,當你是根,但網絡服務器不會有,實際上應該沒有權限這樣做 – Anigel 2013-05-01 13:17:47
我應該在哪裏設置權限? – KiranD 2013-05-01 13:22:04