dポイントプレゼントキャンペーン実施中!

タイトルの通りです。
実行環境は、Apache2+PHP4です(玄箱・Debian)。

system関数を使ってあるプログラムの実行結果をそのまま出力したいと考えています。
しかし、できるプログラム(コマンド)と、できないコマンドがあるのです。

system('df -h', $retval);などというように、dfやlsなどは結果が出るのですが、hddtemp、自前のシェルなどはうまく結果が出ません。
ただ、$retvalは0が出力されます。

状況の切り分けのため、「whoami」を実行したところ結果がうまく出力され、「www-data」と出るので、rootからwww-dataにログインし、hddtempを実行してみたところ、「コマンドが見つかりません」と出ます。ちなみにwww-dataはログイン可能ユーザー?ではありません。(/homeにディレクトリのないユーザー)
dfやlsなどはwww-dataユーザーでも実行可能でした。

つまり、dfやlsと同じような状況をhddtempや自前シェルに適用したいのですが、どうしたらよいでしょうか。

何かヒントをお願いします。

A 回答 (3件)

7にするのが一番楽ですね。


ただ、そのファイルだけではなく、上位のディレクトリも変える必要がありますね。
となると、セキュリティの問題が・・・
hddtempのようなコマンドは、誰でもアクセスできるようにするのと、自前シェルはwww-dataがオーナーのディレクトリを作ってそこにおいてはどうでしょう?
    • good
    • 0

・パスが通ってないもしくはわからないのであればフルパスで指定。


・場合によってはsudoやsuEXECで個別に実行権限をつけてやる。

という対応で
    • good
    • 0

パスの設定と、場合によっては権限の問題でしょう。



www-rootでログインして、hddtemp、自前シェルを / からの完全なパスで指定してください。見つかるはずです。
後は、アクセス権の設定ですね。自前シェルのアクセス権、それが置いてあるディレクトリのアクセス権など、注意してください。

この回答への補足

回答ありがとうございます。

やっぱりアクセス権ですよね・・・。具体的にはどうすればよいでしょうか?www-dataだから、プログラム実行に使用するディレクトリ・ファイルをを、chmodで3番目の数値を7にすればいいですかね?
実行可能だから1でもOKですかね?

もしよろしければ追加ヒントください!

補足日時:2008/07/30 17:20
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!