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インストール時のままだと動作しない)