2011年7月25日

PHP 執行外部命令問題集

利用 PHP 來執行 Linux shell command, 例如

<?php
$result = `sudo /usr/bin/chage -l username`;
echo "$result";
?>

結果顯示不出結果, 查了 /etc/httpd/logs/error_log, 顯示
chage: Permission denied.
表示我的 user 沒有權限執行這個指令, 而 web 的 user 是 apache 這個名字
解法: 執行 visudo, 新增一行
apache ALL=(ALL) NOPASSWD:/usr/bin/chage
讓 apache 這個使用者能夠不用輸入 sudo 密碼就可以執行 chage 指令

改完後還是顯示不出結果, 查了 /etc/httpd/logs/error_log, 顯示
sudo: sorry, you must have a tty to run sudo apache

解法: visudo 修改裡面的 Defaults requiretty 把它用 # 註解起來, 再度執行, 終於可以在網頁上顯示使用者帳戶資訊了

沒有留言: