締切り済みの質問
IEでPerlのgciにアクセスすると
500 Internal Server Error
だったので、
#!/usr/bin/perl
の次に -- を加えて再びIEでアクセスするとエラーはありませんでした。
普通に#!/usr/bin/perlのソースで正常に動作するように
したいのですが、解決策は分かりませんか?
-- というのはどういう意味ですか?
そうしてみれば動くことがあると聞いて試したものです。
投稿日時 - 2004-02-02 13:11:38
1人が「このQ&Aが役に立った」と投票しています
回答(3件中 1~3件目)
ファイルの転送モードを正しく設定して下さい。
Windowsからサーバーにcgiのソースをアップロードする際、サーバーからWindowsにcgiのソースをダウンロードする際に、FTPの転送モードを「テキストモード」で行って下さい。
アップロードの場合には、Windowsで編集して改行が「CR」「LF」になっているソースが「LF」のみの改行に変更されて転送されます。
ダウンロードの場合には、サーバー上で改行が「LF」になっているソースが「CR」「LF」の改行に変更されて転送されます。
改行コードが「CR」「LF」のままバイナリモードでサーバーに転送すると、「CR」が邪魔をしてシェルがperlを起動できず、サーバー内エラー(500 Internal Server Error)が起きます。
つまり、以下のような事が起こっています。
「--」を付けない場合「/usr/bin/perl[CR]」は存在しないから起動できずエラー。
「--」を付けた場合「/usr/bin/perl --[CR]」は「/usr/bin/perl」が存在するのでperlを起動し「--[CR]」はperlに渡され、正しく起動出来たように見える。(「起動出来たように見える」と言うだけで、本当は正しくない)
なお、スクリプト(2行目以降)部分の各行の行末に[CR]が付いていた場合、スクリプトの書き方によってはperlが期待した動作をしない(文字列比較の判定式の結果が狂うなど)場合があるので、cgiがまともに動かない事があります。
投稿日時 - 2004-02-02 14:20:33
補足
「--」というのはPerlですか?Apacheですか?
「--」改行の直前が「--」なら、「--」をその環境での
改行として扱うということですか?
サーバのOSはLinuxです。普通は*.cgiはLFでないと動かないらしいですか、CRLFでも動作するようにPerlかApacheで設定できませんか?
投稿日時 - 2004-02-02 17:49:10
サーバーによるのですが、
#!/usr/bin/perl
でエラーが出るならば、
#!/usr/local/bin/perl
ではないでしょうか・・・
投稿日時 - 2004-02-02 13:18:11
補足
Perlのパスは間違いありません。
*.cgiの改行コードをWindowsからLinuxに変更すると
#!/usr/bin/perl --
にしなくても
#!/usr/bin/perl
で動作しましたが、
#!/usr/bin/perl で、かつ、改行コードをWindowsで
動作する環境にしたいと思っています。
どこを変更すればよいでしょうか?
投稿日時 - 2004-02-02 13:21:00
OKWaveのオススメ
おすすめリンク