- ベストアンサー
SSIで,CGIを実行するときに引数を渡したい
/*hello.exeのソース*/ #include <stdio.h> int main (int argc,char* argv[]) { int i; printf("Content-type: text/html\n\n"); printf("Hello"); for(i=1;i<argc;i++) printf(" %s",argv[i]); return 0; } 上記のC言語で書いた実行ファイルをCGIにしています。いろいろ勉強して経験値を積んでいるところです。このCGIについて,次のように引数を付けて読んでみると, <!--#exec cgi="/cgi-bin/hello.exe?ryo+kei+yoko"--> <!--#exec cgi="/cgi-bin/hello.exe ryo kei yoko"--> [an error occurred while processing this directive]というエラーになります。そもそも,SSIでCGIを実行するとき引数は付けられないのでしょうか?実は,練習用にカウンタを自作したのですが,その書式を引数で渡そうと考えて行き詰まりました。別の方法でもいいので,ブラウザ訪問者のアクション(クリックなど)なしで,引数を渡せないものでしょうか。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (2)
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
回答No.3
- yasuch
- ベストアンサー率41% (27/65)
回答No.1
お礼
レス,ありがとうございます。自宅サーバ,WindowsXpProでアパッチ2.2を動かしています。CGI,SSLを使用するためのconfファイルの設定は終えています。 試したのですが, <!--#exec cmd="/cgi-bin/hello.exe ryo kei yoko"--> <!--#exec virtual="/cgi-bin/hello.exe ryo kei yoko"--> はどちらも, [an error occurred while processing this directive] でした。ネット上で見つけた情報ですが, http://www.tohoho-web.com/lng/200003/00030004.htm にも,前者はだめなようなことが書かれています。アパッチのバージョンにもよるのでしょうか?後者はわかりません。 ただ,いただいたご回答は大きなヒントになりました。shtmlファイルで, <!--#set var="name1" value="ryo" --> <!--#exec cgi="/cgi-bin/hello.exe"--> のように明示的に環境変数として引数を渡して,Cで書いたCGIでは,getenv("name1"); として,引数へのポインタをゲットするようにしました。SSIが2行以上になってしまいますが,これはこれでみとおしがよいので,よしとしたいと思います。 先ほど,次のようにカウンターファイルの指定ができるようになりました。上手く動いています。 <!--#set var="counterfile" value="toppage.dat" --> <!--#exec cgi="/cgi-bin/counter.exe"--> 勉強になりました。ありがとうございました。
補足
SSLでなくて,SSIでした。