[PHP-users 13366] Re: マシンを再起動するPHP
Taoka Fumiyoshi
php-users@php.gr.jp
Tue, 18 Feb 2003 04:52:32 +0900
コンソールからとPHP(WWW)からのshutdown呼び出しを
対比してみると次のようになります。
コンソール ブラウザ
| |
v v
[login] [PHP] 認証: 誰であるのか?
| |
v v
[shutdown] [shutdown] 権限: 実行は許可されているか?
| |
v v
停止 失敗
コンソールからはloginで認証を経ますが、
PHPで認証を行わない場合は、「誰であるか不確定」ということで
PHP(httpd)の動いているユーザー(nobodyなど)が割り当てられます。
そして、このユーザーの権限に基づいてshutdownの実行がチェックされます。
通常、nobodyなどではshutdownを実行できないことでしょう。
ですから、PHPの書き方の問題ではなく、
認証方法や実行権限の調整の問題だと思います。
PHP(httpd)からshutdownするという事自体はbad ideaだと思いますが
PHPやCGIから他のプログラムを実行したり、
ファイルにアクセスする際には同じ問題がおこります。
これに対処するには前図の対比に従って、
前段のPHPで認証を行い、システムのユーザーとの対応をつけておき、
後段のshutdownを呼び出す際にそのユーザーで実行すれば良いと思います。
httpdをrootで走らせたり、nobodyにshutdown実行権限を与えてしまうのは
本末転倒だと思います。
参考: http://httpd.apache.org/docs/suexec.html
# と、ここまで書いて気づいたのですが、以上は一般的なUnixでの話です。
# お使いのOpenBlockSとは http://openlab.plathome.co.jp/OpenBlockS/
# でしょうか。
# http://openlab.plathome.co.jp/OpenBlockS/save.html#restart
# によると、管理用インターフェイスから再起動できるようなので、
# 素直にこれを使うか、PHPをインターフェイスとしたいということならば、
# そのページのformを調べてPHPから必要なフィールドを満たし、
# 認証情報をつけて飛べば綺麗に処理できるのではないでしょうか。