• 締切済み

CGIで、ファイルI/Oをしたい!

インターネットプログラミングにおいて、以下のことを教えてください。 Webサーバ:WinNT4.0 IIS CGI :VCで作成(Cです) HTMLのサブミットより、EXEをコールし、そのEXEの中でDLLをコールして 処理を行っているのですが、DLLの中でファイルOPENを行ったところ、アプリケーションエラーが出てしまいます。 このような、EXEからDLLコール・DLL内でファイルのI/Oなんてことはしては いけないのでしょうか? このやり方が、おかしいのであれば正しいやり方を教えて頂ければ助かります。

  • CGI
  • 回答数3
  • ありがとう数17

みんなの回答

  • kenchan
  • ベストアンサー率0% (0/1)
回答No.3

他の人が言われているように、やりかたは間違いないと 思います。ファイルがOPENできないという問題ならば ブラウザ-から実行した時のユーザー権限かなと。 ブラウザ-から起動した場合は、カレントディレクトリ とか環境変数とかユーザーとか異なるので、これらに 依存するファイル名を作成してるとオープンできない と思いますが。IISは不慣れなものではずしているかも しれません。

noname#9414
noname#9414
回答No.2

どのようなアプリケーションエラーが出るのでしょうか。それを補足にて 書いていただけると、よりフォローがつきやすいと思いますよ。 #もしかして、アプリケーションが落ちてしまうの? ではでは☆

honken
質問者

補足

Kanataさん、回答ありがとうございます。 アプリケーションエラーは、DLL側でファイルをOPENしたときの、ファイルハンドラがNULLになってしまい、それをREAD・WRITEするために、起こっているエラーです。要は、ファイルのオープンが出来ないみたいです。 よろしくお願いします。

noname#151056
noname#151056
回答No.1

DLLでファイル操作をすることには問題はないと思います。 VCで作ったEXEをCGIプログラムとして動かしたことはないので よくわかりませんが、 ひょっとしたら そのDLLが、Webクライアント側から見れない位置にあると エラーが出るのかもしれません。 EXEと同じ位置にあればそういう問題もないと思いますが…。 とりあえずサーバ上で単なるEXEとして動かした場合と CGIプログラムとして動かした場合での違いを調べてみるのはどうでしょうか。 違いがないとしたらコーディングに問題があるはずですよね。

honken
質問者

補足

ttyさん、さっそくの回答ありがとうございます。 とりあえず、サーバー上で、単なるEXEとして動かした場合の動作はまったく問題ありませんでした。 ちなみに、DLLにせずに関数としてEXEに組み込んだら、うまく行くんです。 何かわかりましたら、またお願いします。

関連するQ&A

  • IIS6.0でcgiが認識できない

    IIS6.0でcgiが認識できないのですが 以下の構成でどうなのでしょうか? 仮想パスは認識できているようなので、 http://*.*.*.*/cgi-bin/index.html は表示できます。 ■環境:win2k3/ActivePerl5.8.4/IIS6.0 #################################### アプリケーションの構成マッピング ------------------------------------ ●ISAPI拡張をキャッシュする(checked) ●アプリケーションの拡張子 .pl D:\user\local\bin\perl.exe GET,POST .cgi D:\user\local\bin\perl.exe GET,POST ※スクリプトエンジン(checked) ※ファイルの存在を確認する(checked) #################################### perlの実行ファイルは,ググった結果、以下のものも試してみましたが だめでした。 perlIS.dll perl5.8.4.exe perl.exe "%s" %s どうぞお願いします。

  • CGIを認識してくれなくなりました

    初めまして。cgi初心者です。 Windows2000+IIS(バージョン失念)+ActivePerl5.8.8でcgiを含むHPを作成しました。学内に閉じたNWで動かしています。 当初はなんの問題もなく動いていたのですが、先日久々に見てみるとcgiが動いていません(ソースがそのままブラウザ上に表示されます)。 ファイルが保存されているフォルダを見てみると.cgiファイルのアイコンがテキストになっていました。 IISのアプリケーションマッピングは.cgiで"C\***\perl.exe %s %s"になっています。 perlが壊れたのか?と思い、一度アンインストール→再インストールしてみたのですが、それでも駄目でした。 対処方法、そもそもこのようになった原因に思い当たることがありましたら教えていただけないでしょうか。

    • 締切済み
    • CGI
  • Vista+IISで実行可能形式ファイルをCGIにしたい

    Vista+IIS上で実行可能形式ファイル(exe)をCGIとして実行させるにはどのようにすればよいでしょうか?

    • 締切済み
    • CGI
  • C++とWindowsでCGIです。

    http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CCGI/showtime.html のサンプルソースをコンパイルしてEXEファイルを作成しました。 VisualStudio.NET 2003 WindowsXP Pro Win32コンソールアプリケーションで拡張子.ccファイルをコンパイルしました。 CGIだとEXEファイルをHTML表示できるらしいのですが、 よくわかりません。 Windows環境・VisualC++で手軽にCGIファイルを実行できる方法を教えてください。 EXEファイルの拡張子をCGIに変えても、できませんでした。 あまりCGIのことはよくわからないのですが、C++でできるならやってみたいと思いました。 よろしくお願いします。

  • CGI timeoutって? IISでのcgi設定

    すみません質問させてください。 今、XPでIISをインストールしてCGIが動くようにしてるんですが うまくいきません。 http://localhost/hello.cgi というurlで実行できると思うんですが、 いつまでも読み込んでるだけで、実行されない感じです。 CGI timeoutといわれます。 実行するCGIはHELLOと表示する単純なものです。 また、.cgiファイルは実行プログラムをC:\perl\bin\perl.exeに 指定しています。 IISでは、規定のWEBサイトのプロパティ>ホームディレクトリの 「構成」で.cgiの実行ファイルをC:\perl\bin\perl.exeに指定しています。 とりあえずやるだけやったと思ってるんですが、うまくいかないのはどうしてでしょう。 よろしくお願いします。

    • 締切済み
    • CGI
  • IISでCGIの設定がうまくいきません

    すみません質問させてください。 今、XPでIISをインストールしてCGIが動くようにしてるんですが うまくいきません。 http://localhost/hello.cgi というurlで実行できると思うんですが、 いつまでも読み込んでるだけで、実行されない感じです。 実行するCGIはHELLOと表示する単純なものです。 また、.cgiファイルは実行プログラムをC:\perl\bin\perl.exeに 指定しています。 IISでは、規定のWEBサイトのプロパティ>ホームディレクトリの 「構成」で.cgiの実行ファイルをC:\perl\perl.exeに指定しています。 とりあえずやるだけやったと思ってるんですが、うまくいかないのはどうしてでしょう。 よろしくお願いします。

  • 必要なDBG ファイルが見つからないか、開けません。と出て、実行できません。

    こんにちわ。 VC++.NET初心者です。 ビルドは正常に終了し、実行してみるのですが、表示できずに中断してしまいます。 そして、下記のメッセージが大量に表示されます。 'd.exe': 'D:\o\10.1.0\Client_1\BIN\ORASQL10.DLL' を読み込みました。必要な DBG ファイルが見つからないか、開けません。 'd.exe': 'D:\o\10.1.0\Client_1\BIN\ORACORE10.DLL' を読み込みました。必要な DBG ファイルが見つからないか、開けません。 'd.exe': 'D:\o\10.1.0\Client_1\BIN\ORANLS10.DLL' を読み込みました。必要な DBG ファイルが見つからないか、開けません。 'd.exe': 'D:\o\10.1.0\Client_1\BIN\ORAUNLS10.DLL' を読み込みました。必要な DBG ファイルが見つからないか、開けません。 調べたところ、このメッセージは無視しても良いとのことなのですが。 実行しても画面が出ずに困っています。 前までは出ていなかったはずなのですが、どうしてでしょうか。

  • DLLを直接プログラム内に取り込んでEXEファイルを作れますか

    VC++.NETで開発を行う予定ですが、 そのときicmp.dllというDLLを使う予定です。 これに関する説明を読むと、将来サポートされない可能性があるとのことでした。 それで、このDLLをスタティックライブラリをリンクするように、EXE本体のなかに取り込んでおきたいのですが、そのようなことは、出来るのでしょうか。 つまり、icmp.dllのある環境で、exeファイルを作り、 icmp.dllのない環境で、そのexeファイルを実行させたいのですが、そのようなことはできるのでしょうか。

  • C:\WINNT\system32\SHELL32.dllの中のアイコンファイルがいる

    こんばんは。 C:\WINNT\system32\SHELL32.dll の中にたくさんアイコンファイルがあり、それを使用したいのですが、このファイルが開けません。 SHELL32.dllファイルをダブルクリックすると、「アプリケーションから開く」ダイアログボックスが出てきて、どのアプリケーションから開けばよいのか、分かりません。 誰か分かる方がお見えでしたら、教えてください。よろしくお願いします。

  • CGIが吐き出したファイルの所有者の変更

    データベースCGIで作ったデータを元にhtmlファイルを吐き出すようなつくりにしています。 この、吐き出されたファイルの所有者がnobodyになっていて、FFFTPなどのソフトから修正しようとすると上書きが出来ない状態になってしまっています。 これを、CGIから吐き出す時に所有者を変える事は出来ないのでしょうか? 吐き出すところは以下のようになっています。 sub html_reg{ if (-e "../../list/$no.html"){unlink "../../list/$no.html";} open(HTML,"+>>../../list/$no.html"); &html_data; close(HTML); }

    • 締切済み
    • CGI

専門家に質問してみよう