いとさん、
なるほど、エラーメッセージの問題なのですね。
というわけで、文月さんへの答えの後半は不要でしたね。撤回します。
NT/2000 では、cmd.exe で CGIプロセスを起動するので、エラーメッセージはそうなります。
半角空白については、ファイルシステムが半角空白を使えるのであれば(つまり半角空白を含むパスが設定できるのであれば)、たぶん大丈夫だろうと思います。
ぴゅあさん、
そうですね。ただ、URLの中のエスケープと CGIなどのコマンドシェル上の扱いとは話が違うので、その違いを理解しておくことは必要だと思ったので。
漢字の扱いについてはおっしゃる通りだと思います。
中田さん
実際にゆいちゃっとを試してみました。Win98では、
process.log の中は perl c:"\My Documents\htdocs"\yui\chat.cgi となっており、CGIは正常に実行されます。
perlにパスが通っていないときは以下のメッセージが表示されます。
Error 500
CGI エラー - 以下のコマンドラインを実行できません : "perl c:\My Documents\htdocs\yui\chat.cgi "
ということで、エラーメッセージだけの問題のようです。
ついでに、Win2000Pro上でも同じことをやってみました。
process.log は H:\WINNT\system32\cmd.exe /C perl c:"\My Documents\htdocs"\yui\chat.cgi < "c:\MYDOCU~1\htdocs\stdin.0" > "c:\MYDOCU~1\htdocs\1.0" となります。
perlにパスが通っていないときはWin98とは違うメッセージが出ます。
Error 500
CGI エラー - Content-Type ヘッダが正しくありません。
CGI 出力メッセージ:
'perl' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。
半角空白についてはURL中では%20にすればいいのですが(IEは親切にも置き換えをやってくれます)、ぴゅあさんが言われるように、AN HTTPDで動いたとしても、バージョンやOSも含めてどのHTTPd上に移しても、さらにどのブラウザでアクセスしても問題ないかとなると、私には分かりません。実際のところどうなんでしょうか?
2バイト文字については、例えば私が入っている @nifty(OS:Solaris, HTTPd:Netscape-Enterprise)でも使わない方がいいと言っています(半角空白も)が、実際にテスト(htmlだけですが)してみると問題なくアクセスできてしまいます。しかし以前 Solaris上のNetscapeを使っていた時、Windows上の2バイト文字のフォルダ/ファイルが必ずエラーになった経験があり、サーバとブラウザの組み合わせによってはうまくいかないケース(コード系の問題か?)もあるようです。安全サイドにみて使ってはいけないというのがやはり正解だろうと思います。
★半角空白問題に付いて補足
言われる通りURLとしての半角空白に付いてです。
「パスに半角空白を使えた方が何かと好都合」と言われている点に関してパスと明記されてい
ますが(たぶんパスのことを考えなくて済むということなのでしょうね)以前からURLに半角空白
を含むこと,2バイトコード文字を含むことが何度も取り上げられていたことやURLや
ハイパーリンクとして空白文字や2バイトコード文字を含むサイトも多く見かけていましたのでURLな
どにも半角文字を含むことができると思い込むことも大いにありうるということで一応挙げさせ
て頂きました。
いとさん、
私も大丈夫のはずだと思ったのですが、文月さんのメッセージで cgiファイルが "" で括られていなかったので不安になりました。
エラーメッセージだけの問題なのか確認していただけるとありがたいです。
ぴゅあさんの方は、URL中では空白(スペース)を %20 にするという話だろうと思います。
★半角空白問題に付いて
何度か出てきている半角空白使用の問題に付いて一応注意として。
仕事で丁度この空白問題に引っかかったサイトの修正/アップに完了したところでもあり注意と
して挙げておきます。
日々自由度が広がり色々と使いやすくなってきたサーバですが丁度この空白空白問題
(ディレクトリ名/パス名に半角空白文字を使ったためにFTPでのアップさえできなかった)に引っかか
り依頼主もアップできない理由に付いて気付くまで長い時間を費やしてしまったという実例が今
実際にあったことを記しておきます。FAQを早い時期に読んでおけば直ぐに判ることですがAN HTTP
Serverで使用できるからという先入観にとらわれていると気付かないで長時間無駄に悩み続けて
いることも大いにありうるということで(最初にFAQを読まないからだというのも確かですがそ
う思うこと自体が先入観でもあったりする)。
尤もAN HTTP Serverで半角空白の使用になれていたという訳ではなくWebデザインに関する知
識に乏しい人が作ったものということはありますが1サイト約500ファイルあるページの校正,
確認をやっと終えたところです。
日本語の使用もかなり増えていますがこれも同様に使えないサーバがまだまだ実際に存在し
ます。
特にAN HTTP Serverをプロバイダのサーバにアップするまでのテスト環境として使ってい
る場合には注意すべき点であるということを言っておきます。
限られた例であることではありますが老婆心ながら。。。。
中田さん
> ドキュメントルートに半角空白を含むと何かとトラブルになるので、
私の自宅のPCは、ドキュメントルートは C:\My Documents\htdocs に、AN HTTPD のインストール先は D:\Program Files\httpd にしていますが、CGI スクリプトや /cgi-bin の実行ではパスの半角空白部は "" で括られますし、現状では何も問題は現れていない模様です。
最新バージョンでは「安全宣言」とはいかないにしても、「注意報」は必要なくなったという状況にはなっていないでしょうか? パスに半角空白を使えた方が何かと好都合ですので、特にどのあたりをテストすればいいか言ってもらえればデバッグに協力しますが。
文月さん、
まず、「.pl, .cgi の実行プログラム」のところが「perl」となっていると思いますが、そこを「C:\Perl\bin\perl.exe」などとperl.exeのフルパスで指定してください。
"No such file or Directory"は perl が見つからないためのエラーです。
次に、ドキュメントルートが「D:\Homepage Data」になっていると思いますが、ドキュメントルートに半角空白を含むと何かとトラブルになるので、D:\HomepageData とか、あるいは D:\Homepage とか、空白(スペース)を含まないディレクトリ名(フォルダ名)にしてください。
どうもこんにちわ。文月と申します。
AN HTTP ServerをDLさせてもらって、自宅のPCでCGIを動かそうとしたところ、下のようなエラーメッセージが出てきました。
Error 500
CGI エラー - 以下のコマンドラインを実行できません : "perl D:\Homepage Data\cgi\chat-yui\chat.cgi ", errorcode = 2, No such file or directory
使っているブラウザはIE5.5Beta、OSはWin98S.E.、An HTTP Serverのバージョンは1.28dで、PerlはPerl for Win32 Build 316を使っています。
どうすればいいのでしょうか?教えてください。