• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:POST形式でファイルを送ると、CGIモジュールでエラーが出ます。)

ファイル送信時のCGIモジュールエラー原因と解決法

このQ&Aのポイント
  • POST形式でファイルを送信する際に、CGIモジュールでエラーが発生します。CGIモジュールとPOSTによるファイル送信の相性に問題があるのか、他に解決すべきことがあるのか検証しました。
  • ファイルを添付できるメールフォームを作ろうと思い、呼び出し側のHTMLファイルを作成しましたが、受け手のCGIでエラーが出ました。
  • プログラムのコードを削りながらエラーの原因を特定しましたが、CGI open of tmpfile: No such file or directoryというエラーメッセージが表示されました。フォームの送信方法やファイルの有無によってもエラーが発生することがわかりました。

質問者が選んだベストアンサー

  • ベストアンサー
  • zxcv0000
  • ベストアンサー率56% (111/196)
回答No.1

> CGI open of tmpfile: No such file or directory このエラーメッセージを頼りに CGI.pm のマニュアルを見てみると... http://perldoc.jp/docs/modules/CGI.pm-2.89/CGI.pod#item__private_tempfiles これに沿って、一時ファイルディレクトリを指定してみてください。

makoji
質問者

お礼

TMPDIR変数に  /usr/bin のパスを通したらうまく作動しました。 ありがとうございます。 一応私もCGI.pmのPODは見ようとしたのですが、PPMからCGIを選択し、その詳細にあるURLをクリックしたら、CGIのPODであるはずリンク先がCGI::何たらのリンク集になってて、そのリストが808もあり、大江戸八百八町じゃあるまいしと検索をそこであきらめていました。今日改めてPPMを覗いてみると、検索窓にCGIと入れれば、ちゃんとCGI.pmのPODが出てきますね。あるいはアメリカ版googleを使って検索を掛けても、CPANの方のPODがヒットしました。 日本語版のサイトも教えてもらいましたし、今回、直接的にプログラムが動いたという事実よりも、そういったことの方が収穫が大きいと思います。 どうもありがとうございました。

その他の回答 (1)

  • petita
  • ベストアンサー率53% (8/15)
回答No.2

初心者並みの者ですが、次のところを直すとどうでしょう。 スクリプトの先頭行 #!/usr/bin/perl にしてみる。 -d スイッチは付けない。 付けるなら -w スイッチ。そうすると、 our $q=new CGI; は my $q=new CGI; で良い。

makoji
質問者

お礼

ありがとうございます。 -dスイッチを付けたままブラウザで起動すると普通エラーが出ます。でも私の場合、サードパーティのデバッガを使っていて、その仕様上、-dスイッチを付けたままスクリプトをブラウザで起動するとデバッガが起動するようになっています。 いらぬご心配をかけぬよう、-dスイッチは外してスクリプトを上げれば良かったですね。 ありがとうございました。

関連するQ&A