• ベストアンサー

SSIでスクリプトが実行できない

SSIでHDDの温度を表示するスクリプトを実行しようとしましたが、上手くいきません。SSI自体は正常に動作しています。(試しに、他のスクリプトを実行させたら、正常に作動しました。) 問題は、コマンドラインからスクリプトを実行させると正しく動作するのに、作成したshtmlを実行すると動作しないのです。 以下に、正しく表示されないスクリプトとshtml、正しく動作したスクリプトとshtmlを表示します。 1.正しく表示されないスクリプト、shtml(HDD温度表示) [スクリプト] #!/bin/sh hddtemp /dev/hda | awk '{print $4}' ※コマンドラインからの実行結果 39 [shtml] <html> <head><title>HDDTEMP実験</title></head> <body> 現在のHDD温度<br> <!--#exec cmd="./hddtemp.sh"--> </body> </html> ※実行結果 現在のHDD温度 2.正常に動作したスクリプト、shtml [スクリプト] #!/bin/bash /bin/date ※コマンドラインからの実行結果 Sun May 22 18:11:21 JST 2005 [shtml] <html> <head><title>SSI使用例</title></head> <body> 現在時刻を表示します<br> <!--#exec cmd="./date.sh"--> </body> </html> ※実行結果 現在時刻を表示します Sun May 22 18:09:56 JST 2005 Apacheは1.3.33です。 どうぞよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • 50100
  • ベストアンサー率28% (99/351)
回答No.1

hddtemp.sh内から呼び出しているhddtempという実行可能ファイル?のパーミッションは適切ですか? Apache実行ユーザーにsuして、hddtemp.shを実行してみれば切り分けが出来るでしょう。

terayamada
質問者

お礼

失礼しました。よく調べましたら、hdetempのセットアップの際に、"Do you want /usr/sbin/hddtemp to be installed SUID root?"という設定項目がありました。ここの設定を調整することにより、suでなくても実行することが出来るようになりました。 いずれにせよ、ご指摘のポイントが問題解決の大きなきっかけになりました。どうもありがとうございました。

terayamada
質問者

補足

ApacheはDebianで動かしています。hddtempはapt-getで入れてみました。 確かにApache実行ユーザーにsuしたところ、hddtemp.shはcommand not foundとなりました。date.shは実行できました。おっしゃるとおりhddtempのパーミッションが適切でないということだったようです。 hddtempですが、sbinの中に以下のものが入っています。 -rwxr-xr-x 1 root root 12768 Oct 11 2002 hddtemp sbinに入っているということは、これはApacheからSSIで実行するのは無理、ということでしょうか?

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

スクリプトを hddtemp /dev/hda だけで実験してみる $4 を $5にしたり $3にしたりしてみる

terayamada
質問者

補足

ありがとうございます。 はい、そこはいろいろ変えてもそれなりに動きました。

関連するQ&A

専門家に質問してみよう