カレッヂ |
質問者 なみだ
投稿日 1/23(木) 22:48:45
SSIの過去ログで同じような書き込みがあったので、 実行してみたのですが、なかなかSSIが実行できずに困っています。 <!--exec cmd="cgi-bin/test.cgi"--> これで実行するとまったく値が返ってきません。 そこで、過去ログに書いてあった <!--#include virtual="cgi-bin/test.cgi"--> これでやると、一応値は返ってきました。 #!/usr/bin/perl print "abc"; 実行結果↓ abc しかし、下記のソースを実行するとエラーがでてきます。 #!/usr/bin/perl open(FH,"<cnt.txt"); $cnt = <FH>; close(FH); $cnt--; open(OU,">cnt.txt"); print OU $cnt; close(OU); if ($cnt == 0) { print "在庫は0です。"; } else { print $cnt; } このようなエラーがでます。↓ an error occurred while processing this directive cnt.txtの数字は実行毎に減っているのですが、エラーが出てブラウザに表示されないのです。 環境はApache2.0.40 サーバーLinux Apacheの設定でSSIの実行はできる設定にしたはずです。 因にWindowsサーバーでは実行できました。 Apacheの設定が悪いんですかね・・・
プロバイダ参照: |
回答者 しあわせのツボ
[削除]
投稿日 1/23(木) 23:54:04
まずtest.cgiを単体で実行してエラーが出ないか確認してください。 推測ですが、cnt.txtが読み書きできないのではありませんか? パーミッションが与えられていないとか。 |
質問者 なみだ
[削除]
投稿日 1/24(金) 00:06:57
しあわせのツボさんお返事ありがとうございます。 単体で実行してみようと、 print "Content-Type: text/html\n\n"; を入れて念の為もう一度SSIを実行してみたらできました! これ、いるんですね(笑) 初歩的な質問で失礼しました。 そして、ありがとうございました。 <!--exec cmd="cgi-bin/test.cgi"-->で実行できないのに、 なぜ<!--#include virtual="cgi-bin/test.cgi"-->で実行できるんでしょうか? やっぱりApacheの設定ですかね? |
回答者 しあわせのツボ
[削除]
投稿日 1/24(金) 12:24:40
最近のhttpdは「SSIは許可するがexecはダメ」という設定が可能なので、 どこかにその設定が残っているのではないでしょうか。 Apache2.0は私もまだよくわからないので、具体的にどことは言えないのですが。 もっとも、セキュリティの都合上execはあまりよろしくないので、 includeで代替できるなら設定を変更せずincludeで運用した方がいいと思います。 # デフォルトがそうなっているのもそれが理由でしょうし。 |
質問者 なみだ
[削除]
投稿日 1/24(金) 12:30:26
う〜ん、やっぱりApacheの設定ですね。 >もっとも、セキュリティの都合上execはあまりよろしくないので、 >includeで代替できるなら設定を変更せずincludeで運用した方がいいと思います。 そうですね。 問題なければこのままにしておきます。 ありがとうございました。 |
このページは終了したので返信(回答)は書きこめません
Web裏技 |