![]() |
カレッヂ |
質問者 南場
投稿日 10/18(金) 21:00:45
windows 2000 server(英語版) IIS5.0の環境です。 SSIでdirectoryを変更しようとおもい(カレントディレクトリは%SystemRoot%\system32ですね) <!--#exec cmd="cd .."--> としたら Failed to execute cript 'cd ..' Win32 Code=2となり エラーとなってしまいます。これは、どうしたらよいのでしょうか。 また、一行に2つの実行コマンドを書くにはどうしたらよいでしょうか。 例えば <!--#exec cmd='cd ..;dir"-->(これはもちろんエラーとなりますが) のようにです? 御存じの方は教えていただけないでしょうか。
プロバイダ参照: |
回答者 まさ
[削除]
投稿日 10/19(土) 20:00:42
IISでSSIを許可していますか? 詳しくは、http://localhost/iisHelp/ のIIS5.0 DocumentationのIndexタブで 「#EXEC」および「SSIEnableCmdDerective」の項を参照してください。 複数のコマンドを実行させたければ、BATファイルにすればいいです。 IISはデフォルトではBATファイルが使用できないので、これもIISの設定で使用可に 変更しておいて下さい。 |
質問者 南場
[削除]
投稿日 10/21(月) 13:43:00
まさ 様 アドバイスありがとうございます。 SSIEnableCmdDerectiveの設定はしてあります。 IBATファイルも、IISの設定で使用可にしてあります。 (これは、.bat を c:\WINNT\system32 /C %s %s と関連つければよいのですよね) この関連づけのオプション /C %s %sがよく分かりませんが。 WINDOWS COMMAND 例えば dirなどは問題ないのですが、cd .. cd c:\tmpなど一部が うまくいきません。 また、バッチファイル(test.bat)のなかに、自分のプログラム a.exe (これは、単に1〜100 までを表示するもの)は、なんの結果もだしません(エラーもだない)。 (test.bat) @echo off c:\tmp\cgi-bin\a.exe echo SSI-TEST-3 コマンドプロンプトで >test.batとすれば、 1. 2. 3. .........................100. SSI-TEST-3 と全く問題ないのですが、 <!-- #exec cmd="c:\tmp\cgi-bin\test.bat"--> としても、a.exeのところは全くなにもしません(結果をださない)。 もし、おわかりになったらアドバイス宜しくお願いいたします。 南場 |
質問者 南場
[削除]
投稿日 10/21(月) 14:39:18
まさ 様 アドバイスありがとうございます。 SSIEnableCmdDerectiveの設定はしてあります。 IBATファイルも、IISの設定で使用可にしてあります。 (これは、.bat を c:\WINNT\system32 /C %s %s と関連つければよいのですよね) この関連づけのオプション /C %s %sがよく分かりませんが。 WINDOWS COMMAND 例えば dirなどは問題ないのですが、cd .. cd c:\tmpなど一部が うまくいきません。 また、バッチファイル(test.bat)のなかに、自分のプログラム a.exe (これは、単に1〜100 までを表示するもの)は、なんの結果もだしません(エラーもでない)。 (test.bat) @echo off c:\tmp\cgi-bin\a.exe echo SSI-TEST-3 コマンドプロンプトで >test.batとすれば、 1. 2. 3. .........................100. SSI-TEST-3 と全く問題ないのですが、 <!-- #exec cmd="c:\tmp\cgi-bin\test.bat"--> としても、a.exeのところは全くなにもしません(結果をださない)。 もし、おわかりになったらアドバイス宜しくお願いいたします。 南場 |
回答者 まさ
[削除]
投稿日 10/21(月) 17:23:24
#exec cgiは動作するのでしょうか? バッチを直接起動せず、a.exeを起動すればどうなりますか? <!-- #exec cmd="c:\tmp\cgi-bin\a.exe"--> また、 <!-- #exec cgi="c:\tmp\cgi-bin\a.exe"--> はどうでしょう? a.exeはCで書いているのでしょうか? いずれにせよ、#exec cgiではa.exeの中にヘッダーが要ります。 試してみてください。 |
質問者 南場
[削除]
投稿日 10/21(月) 19:41:39
まさ 様 アドバイスいただきまことにありがとうございます。 <!-- #exec cmd="c:\tmp\cgi-bin\a.exe" --> のほうは、きちんと結果をだします。 つまり、1〜100までの出力と echoでくる、SSI−TEST−3という出力です。 cmdをcgiにかえた <!-- #exec cgi="c:\tmp\cgi-bin\a.exe" --> は、CGi TIME OUTとなってしまいます。 (こちらのほうは、パスをcgi-bin/a.exeとかくほうがいいのでしょうか?) a.exeはfortranでかいていて 1 dimension a(100) 2 do 1 =1,100 3 a(i)=float(i) 4 1 continue 5 write(*,*) "Content-type: text/plain\\n\\n" 6 write(*,*) 7 stop 8 end まさ様がいっておられるヘーダーというのは5行目のことですか? このあたりが、ポイントとなると考え、ヘーダー付け加えましたが、結果は全く同じで なにも出力しません。 もし何かアドバイスいただければ大変たすかります。 南場 |
回答者 まさ
[削除]
投稿日 10/21(月) 20:02:48
><!-- #exec cgi="c:\tmp\cgi-bin\a.exe" --> >は、CGi TIME OUTとなってしまいます。 >(こちらのほうは、パスをcgi-bin/a.exeとかくほうがいいのでしょうか?) \でいいですよ。 >a.exeはfortranでかいていて >1 dimension a(100) >2 do 1 =1,100 >3 a(i)=float(i) >4 1 continue >5 write(*,*) "Content-type: text/plain\\n\\n" >6 write(*,*) >7 stop >8 end >まさ様がいっておられるヘーダーというのは5行目のことですか? そうですね。それがヘッダーですが、これだとループ回数分出力しません? ヘッダーはループの前に書いておきましょう。 #exec cgiは動かない。 #exec cmdでは動く。 しかし#exec cmdをバッチすると動かない。 恐らくこれらは全てIISの設定で起こっていると思います。 設定はご自分で行ったのですか? もう一度設定を見直す必要がありますね。 IISでの設定等は書物、サイト等数多くありますので、これらを参考にしてみては どうでしょう。 こちらでも何かわかりましたら、また連絡します。 |
質問者 南場
[削除]
投稿日 10/21(月) 21:11:40
まさ 様 アドバイスありがとうございます。 IISの設定はすべて私がやっております。 ループの件については、まったくループしない(1回のループ)実行プログラムでやってみましたが、 やはりa.exeの結果は出力されませんでした。 bat ファイルの子プロセスが結果を表示しないということで、 CreateProseeWithNewConsole REG_DWORD 1 としてもやはり子プロセスは表示されませんでした。 お手数をおかけしますが、まさ様のPCでは、Cや他のプログラム言語で書いた子プロセス はきちんと実行できますか? 御指導宜しくお願いいたします。 南場 |
回答者 まさ
[削除]
投稿日 10/21(月) 21:28:21
わたしはIISの5.0は知らなくて、実際設定したのはWindowsNTServer+IIS4.0です。 IIS5.0は4.0とあまりかわらないと思うのですが、詳しいところはわかりません。 わたしがIIS4.0で設定した限りでは、SSIは難なく動いていました。 もちろんBATも。 何故上手く動かないのかはわからないですが、SSIEnableCmdDerectiveの設定とBAT の設定を行っていたら動くようなものなのですがね。 設定はそんなに難しくなかったと記憶しています。 何故動かないのでしょう? 2000が英語版と言うのが少し気になるのですが、これは恐らく気のせいでしょう。 これ以上具体的にアドバイスできなくて申し訳ないです。 |
質問者 南場
[削除]
投稿日 10/23(水) 21:20:32
まさ 様 いろいろありがとうございます。 解決いたしました。 adsutil set w3svc/CreateCGIWithNewConsole "1" でできました。 regeditで編集していたのですが、働いていないようです。 また、IIS5では、iishelpでしらべたところ、CreateProcessWithNewConsoleはないようですが? こちらにばかり気をとられていて。 とにかく有難うございました。 南場 |
回答者 まさ
[削除]
投稿日 10/23(水) 22:30:36
iishelpにないですか? あれはWindows2000+IIS5.0でのヘルプなのですがね。今度確認してみます。 いずれにせようまくいってよかったですね。 ただこれはわたしの個人的な考えなのですが、IISを使うメリットはASPやSQLとの連携 だと思います。もしこれらを全く使わずに、PerlやC等でのCGIのみを使うのであれば IISを使わずにApacheを使った方がいいと思ういます。以前IISのUNIX版を出すとか言う 話しを聞きましたが、まだ実現されていませんし、IISはWindows固有のHTTPdですよね。 Apacheは多くのUNIX,WindowsのHTTPdで広く使われています。こちらの技術を身に付ける 方がいいと思うのですが。 まあ、あくまでこれはわたしの私見ですので気になさらずに。。。 |
質問者 南場
[削除]
投稿日 10/24(木) 10:01:12
まさ 様 アドバイス誠にありがとうございます。 わたくしもApacheを使いたいのですが、関わっているGISのプロジェクトがIISを使っていて 変更できない事情があります。 GISの側がグラフィックが弱く、私のほうがサポートするかたちで、不器用なかなちに なってしまいました。 ありがとうございます。 南場 |
返信(回答)する
Web裏技 |