• ベストアンサー

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

  • Apach2でSSIコマンドが実行出来ないのですが教えてください

    環境は、自宅サーバ、WindouwsXP、Apache/2.0.53 (Win32) PHP/4.3.10 mod_jk2/2.0.2です。 [httpd.conf SSI関連設定] AddType application/x-server-parsed .shtml AddHandler server-parsed .shtml AddHandler cgi-script .cgi .pl .bat [SHTMLファイル] <HTML><HEAD><TITLE>counttest</TITLE></HEAD><BODY> あなたは<!--#exec cmd="countlog/count.pl" -->人目のお客様です。 </BODY></HTML> [count.plファイル] #!c:/perl/bin/perl $file="C:/ProgramFiles/Apachegroup/Apache2/htdocs /nandemokan/countlog/numfile"; open(FILE, "<$file"); #人数ファイルを読んで 以下省略 http://localhost/nandemokan/index.shtml [SHTML実行結果] あなたは人目のお客様です。 http://localhost/nandemokan/countlog/count.pl [直接SSIを指定した結果] Internal Server Error なお、コマンドプロンプトからcount.plを実行すると 正常にカウンタが出力されます。 ANHTTPDではうまくいったのですが、Apache2で出来なくて困っています。よろしくお願いします。

    • ベストアンサー
    • CGI
  • SSIの表示

    perl/cgiの勉強中でssiでhtmlへの埋め込みを行いたいのですが、何故か出力が2度されてしまいます。 以下実行プログラムと結果です。 [test.cgi] #!/usr/bin/perl -w use strict; use warnings; print "Content-type:text/html\n\n"; print "hoge"; exit; [test.shtml] <html> <head></head> <body> <!--#include virtual="/cgi-bin/test.cgi"--> </body> </html> [出力] hogehoge …となってしまいます。どなたかご教示願えませんでしょうか? よろしくお願いいたします。

    • 締切済み
    • CGI
  • SSIが作動しません

    使っているレンタルサーバーは、SSIを許可しています。実行ファイルとSSI記述ファイルが同じ階層にあれば使えるという制限です。 今回初めてSSIを使って、タイトル(+カウンター)とメニューの項目を全ページに表示させようとしているのですが、うまくできません。 SSIを記述するファイルについていまいちわからないのですが、まずはタイトル(+カウンター)の記述をしたいのですが <table align="center" width="100%" cellspacing="0" cellpadding=""> <tr> <th align="left" width="45%" class="font2">タイトル名</th> <td width="55%" valign="bottom"><script language="JavaScript" type="text/javascript" src="http~"></script><noscript><a href="http~" target="_blank">カウンター</a></noscript></td> </tr> </table> ↑このように貼り付け、ファイル名を「title.shtml」としました。 で、実行ファイルの表示させたい部分に、<!--#include file="title.shtml"-->と書いたのですが、画面にタイトルが表示できません。 ファイル名を上記のように保存したら「title.shtml.txt」になってしまっていたので、それに合わせて<!--#include file="title.shtml.txt"-->でも試したのですが無理です。

    • ベストアンサー
    • HTML
  • SSIの実行

    アクセスカウンタ作成についての質問です。 あるプロバイダが提供している領域を使い、 public_htmlフォルダ直下に count.cgi、count.shtmlというファイルを置き、 count.shtmlからcount.cgiを呼び出して、 自前のアクセスカウンタを実行しようとしましたが、 アクセス数の部分が表示されず困っています。 ("カウント数は"の後が空白で何も表示されません。 エラー表示等はありません) チェック方法項目等ありましたらお教え頂けません でしょうか。 よろしくお願い致します。 ※public_htmlフォルダ及び、対象2ファイルには  それぞれ755のパーミッションを設定しています。 以下、html文です。 ------------------------------ <html> <head><title>アクセスカウンタ</title></head> <body> カウント数は <!--#exec cgi="./count.cgi"--> </body> </html> 以下、CGIプログラムです。 ------------------------------ #! /usr/local/bin/perl $filename = "count.txt"; if (!open ( FP, "$filename")) { $no = 0; } else { $no = <FP>; close(FP); } $no++; print "$no" if (!open ( FP, ">$filename")) { print "ファイル $filename がオープンできませんでした ($!)\n"; } else { print FP $no; close(FP); }

    • 締切済み
    • CGI
  • SSIとSEOについて

    こんにちわ☆ とあるサイトの質問と答えに、以下のようなものがありました。 「■質問 SSI (Server Side Include)をページに使うとランキングが落ちたり SEO に何か影響がありますか? (質問者:匿名) ■回答 SSI とは特定の文字列をWebページに記述しておくことで、サーバにリクエストがあった時に、そのSSIの実行コマンドの結果を置き換え・表示してくれる機能です。 SSI の働きを理解していただければ、SSI が SEO に影響があるかないかはわかりますね。つまり、クローラーがサーバにリクエストを送ったとき、SSI が実行された結果をサーバが返してくるわけですから、SSI 自体がクローラーによるページ情報の収集およびページの分析の障害になることはありません。 ということで、SSI を使っても何も問題はありません。」 という内容だったんですが、 トップページ、または全ページの拡張子が「shtml」でも 「SEO」に影響はないってことなんでしょうか?? shtmlをhtmlに変更することも可能なようですが、 shtmlで不都合なこと? などがあれば同時に教えていただけると助かります。 お返事よろしくお願いしますm(;∇;)m

    • ベストアンサー
    • HTML
  • [シェルスクリプト内で bashコマンド後のコマンドが実行されない]

    [シェルスクリプト内で bashコマンド後のコマンドが実行されない] 以下の様にシェルスクリプトを記述するとコマンド2が実行されません。 #! /bin/sh コマンド1 bash コマンド2 bash環境でコマンド2を実行させるにはどうしたら良いのでしょうか?

  • 【SSI】include file、include virtualが動作しない

    htmlはほぼマスターしているのですが、SSIは超初心者です。 標記の通り、include file、include virtualを試しているのですが、参照先のファイルが表示されません。サーバにはアップロードしておらず、ローカルで確認しているのですが、これでは動作しないのでしょうか。 --index.shtml <html> <head> </head> <body> <!--#include file="0000.html" --> ... <!--#include file="0001.html" --> </body> </html> --0000.html <html> <head> </head> <body> あああ </body> </html> 情けない質問ですが、よろしくお願いします。

    • ベストアンサー
    • HTML
  • sudoでシェルスクリプトを実行させたい

    /usr/bin/sudo を使って、xxx.shを実行させたいので、設定でxxx.shを許可しました。 その後Apacheで動くCGI(perlスクリプト)から、``を使って実行させようと考えています。 このときにこのxxx.shがうまく動きません。多分シェルにアクセスできないのだと思いますが、どうしたらこのスクリプトをroot権限で動かす事ができるようになるのでしょうか。関係あるかどうかわかりませんが、xxx.shの中身はディレクトリ作成コマンドなどです。ネットで検索したら、シェルスクリプトだけ許可にすればよいとあったのですが・・。セキュリティ的には/bin/shを許可するのはまずそうな気がするのですが、こちらを許可してもよいものでしょうか。 環境等 xxx.sh 755 所有者(user1) Apache実行ユーザ (apache) CGIの実行ユーザ(apache?) 挑戦したコマンド(とアパッチのログ) `/usr/bin/sudo sh ./xxx.sh`; ->パスワード求められます (/bin/shの権限がない?) `/usr/bin/sudo ./xxx.sh`; ->/usr/bin/sudo: unable to exec ファイルのパス No such file or directory (xxx.shのファイルの場所はあってます) `/usr/bin/sudo フルパス/xxx.sh`; ->/usr/bin/sudo: unable to exec ファイルのパス No such file or directory (xxx.shのファイルの場所はあってます) 不足の点などあればご指摘ください。

  • INTERLINKでSSIを使ったんですが…

    超初心者です。 SSIを使ってHPを作成したんですけど land.toという無料のサーバーでテストした時はきちんと表示されたのに 実際にINTERLINKというサーバーでUPしたらSSIの部分だけが表示されませんでした。 land.toにUPした時は.txtでよかったんですけどINTERLINKは.shtmlにしろと書いてあったので直しました。 indexは <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <!--nobanner--> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=SHIFT_JIS"> <META name="GENERATOR" content="IBM WebSphere Studio Homepage Builder Version 9.0.0.0 for Windows"> <META http-equiv="Content-Style-Type" content="text/css"> <LINK rel="stylesheet" href="css/common.css" type="text/css"> <SCRIPT langage="javascript" src="script/embed.js"></SCRIPT> <TITLE></TITLE> </HEAD> <BODY> <!--#INCLUDE FILE="header.shtml"--> <TABLE width="900" bgcolor="#ffffff"> <TR> <!--#include FILE="menu.shtml"--> <TD width="700" valign="top"> <BR><BR> <SCRIPT>embedFlash2();</SCRIPT> </TD> </TR> </TABLE> <!--#INCLUDE FILE="footer.shtml"--> </BODY> </HTML> となってます。 もちろん.htaccessも一緒にUPしてるのですが何が行けないんでしょうか? ちなみにINTERLINKで借りてるサーバーには現在稼動してるHPがあるので testというフォルダーを作ってその下にHTMLやimegを置いています。

  • PHP+SSI

    「index.php?a=100」のようなページをSSI(ssi.shtml) から実行したいと考えています。 ところがssi.shtml内で <!--#exec cmd="index.php 100"--> とし index.php内で引数渡しの設定として「$argv[0]」として ますが、ssi.shtmlを実行しても実行結果を返さずブランクに なってしまいます。index.phpのパーミッションも実行可能に 設定しているのですが…。  上記以外の方法でも結構ですので、SSIで引数付きのPHPを 実行する方法をご存じの方がいらっしゃいましたら、教えて ください。 Apache 1.3.31+PHP 4.3.1で動いています。もちろんSSIで #execがNGなんてオチも有りません。 なお、下記URLによればSSIからの引数渡し自体はCGIだと可能の ようですが…。 http://tohoho.wakusei.ne.jp/wwwssi.htm#Exec

    • 締切済み
    • PHP
PX-K150オフライン対策
このQ&Aのポイント
  • PX-K150とPCがオフラインになる問題についての対策方法を教えてください。
  • 無線LANでPX-K150とPCを接続しているが、もう一台のEW-052Aを接続するとオフラインになる原因と解決策を教えてください。
  • PX-K150とPCが同時に接続するとオフラインになってしまう問題について、対策方法を教えてください。
回答を見る

専門家に質問してみよう