system('sudo -u hoge cat /tmp/hoge')とか
CentOS5+Apache+PHP で、visudo で apacheに権限を追加してにも関わらず、
system('sudo -u hoge cat /tmp/hoge')
が全く動作しなかったわけだが、
/var/log/httpd/error_log:
sudo: sorry, you must have a tty to run sudo
というエラーが出ている場合、こういうことらしい。
sudo
ttyを持っていない状態でsudoをすると sorry, you must have a tty to run sudo と文句を言われる。daemonとかがそう。回避方法は↓に書いてます。 /etc/sudoers の requiretty 部分をコメントアウトする。
確かにコメントアウトしたらうまくいった。
(CentOS5インストール時のままだと動作しない)