- ベストアンサー
CGIが動作しません。
最近、Perlを初めたのですが、 CGIがうまく動作しません。 他のCGIは動作しているので CGIは動作する環境だと思います。 http://からフルパスでCGIを実行しても、 以下のエラーがでます。 ------------------------------------- 500 InInternalServerError サーバーエラーです。 以下の理由が考えられます。 パーミッション等の設定が 間違っている可能性があります。 サイト管理者にお問い合わせ下さい。 ------------------------------------- ちなみに以下のような簡単なCGIも同様です。 ===================================== #!/usr/local/bin/perl print "Content-type: text/html\n\n"; print "<html><head>\n"; print "<meta http-equiv=Content-Type content=text/html; charset=x-sjis>\n"; print "<title>StartCGI</title></head>\n"; print "<body>\n"; print "<p align=center><font size=4>初めて書いたCGI</font></p>\n"; print "</body></html>\n"; exit; ===================================== なぜなんでしょう。 困ってます。 ご教授の程、宜しくお願い致します。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
結局、動かないのはサンプルで質問に書いていただいたコードなのでしょうか? だとしたら#5さんの回答を参照してもらうとして、ローカルで動かす方法をご紹介します。 1. 参考URLから、ActivePerlをダウンロードします。 2. インストールして、コマンドラインから、「perl (ファイル名)」とやるだけです。 コードに間違いが無ければ、 Content-type: text/html <html><head> ~ のように表示されます。エラーがあれば、行番号とともに表示されますのでそちらを参考にデバッグしてみて下さい。 Windows でPerlを動作させるための詳細は以下のサイトなどをご覧下さい。 http://www.harukaze.net/~mishima/perl/win/winperl.html
その他の回答 (7)
- yatokesa
- ベストアンサー率40% (201/496)
動作しているCGIとテストしようとしているCGIのディレクトリは一緒ですか?実行を許可されていないディレクトリではエラーになります。
- noopee
- ベストアンサー率38% (114/297)
再度。 結構思い当たりそうなフシがなさそうですね...。 私が時々やる悪あがき(笑)をお試しください。 print "Content-type: text/html\n\n"; print "<html><head>\n"; を print "Content-type: text/html\n\n"; print "<html><head>\n"; のようにコードで改行を出すだけではなく、実際の改行を入れる。 #!/usr/local/bin/perl を #!/usr/local/bin/perl -w を付けて動かしてみる。 なぜかこれで動いたことがあります。 サーバのエラーログが見られれば、もうちょっと原因がつかめるんですが...。
- oodaiko
- ベストアンサー率67% (126/186)
私が思い当たるのは改行コードと拡張子の問題くらいです。 yu-ji さんはWindowsでソースコードを書いておられることと思います。WindowsはCR+LFを改行コードとしていますがUNIX系OSではLFだけで改行コードとしています。 そこでサーバーマシンがLinuxなどUNIX系OSを使っている場合、改行コードをUNIX用に合わせてやらないとエラーになることがあります。サーバーの設定によってはWindowsの改行コードのままでも読んでくれるのかも知れませんが、私の環境ではWindowsで書いたCGIスクリプトはやはり改行コードを変換しないとエラーになります。 Windowsでの改行コード変換ソフトは知りませんが多分いくらでもあると思います。また大抵のエディターには機能として附属していると思いますので調べてみて下さい。 あとはスクリプトファイルの拡張子が.plになっていないでしょうか。これもサーバーの設定によっては拡張子が.cgiでないとCGIスクリプトとして認識してくれない場合があります。
お礼
ありがとうございました。 無事に解決致しました。 理由はよくわからないのですが、 そのフォルダがよくなかったみたいで 新しいフォルダをそのフォルダの下に作って実行したら、うまく動作致しました。 他のCGIはそのフォルダでも動作していたのでなぜ私が作ったCGIだけがうまく動かなかったのかわかりません。 沢山の皆様にご回答を頂き感謝しております。 ありがとうございました。
- quenista
- ベストアンサー率28% (122/425)
もう一つ思い当たる節を...。 改行コードを確認して見て下さい。 BINARYモードでアップされているのであれば、 サーバーに上げる時に、ASCIIで送ると正しく変換されると思います。
お礼
ありがとうございました。 無事に解決致しました。 理由はよくわからないのですが、 そのフォルダがよくなかったみたいで 新しいフォルダをそのフォルダの下に作って実行したら、うまく動作致しました。 他のCGIはそのフォルダでも動作していたのでなぜ私が作ったCGIだけがうまく動かなかったのかわかりません。 沢山の皆様にご回答を頂き感謝しております。 ありがとうございました。
補足
アスキーモードで転送しております。 その正常に動作するCGIも同じようにサーバにアップしておりますので間違いないと思います。
- annie_x
- ベストアンサー率50% (65/129)
質問に書かれているサンプルが動作しないのだとしたら、原因はあと2つしか思いつきません。 1. コードに使用できない文字が含まれている。 ファイル内に全角スペースなどが紛れ込んでいませんか? *ローカルで動作するのであればこれは当てはまりません。 2. サーバーに障害が発生している。 *同じサーバー上で別のCGIが動作しているのであればこれは当てはまりません。 このどちらでもないとしたら、ローカルの環境で動作するかどうかと、逆に動作しているコードを見せていただきたいところです。
補足
1.コードに使用できない文字ですか・・・ 全角スペースの他にどんな文字があるのでしょう? コメント、文字列としては全角はOKですよね。 2.他のCGIは正常に動作しておりますのでサーバの問題ではなさそうです。 ローカルで、動作させる方法がわからないのですが。 それと、正常に動作しているコードは結構長いので ここにのせるのはちょっと無理ですね。 著作権の問題もあるかもしれないので。
- annie_x
- ベストアンサー率50% (65/129)
とりあえず2つ。 1. パーミッションの設定が間違っている このファイルのパーミッションを、「755」などにしてみて下さい。 2. Perlへのパスが通っていない #!/usr/local/bin/perl を、他の動いているCGIと同じかどうか確認してください。 例えば、「#!/usr/bin/perl」にする必要がある場合があります。
お礼
ありがとうございました。 無事に解決致しました。 理由はよくわからないのですが、 そのフォルダがよくなかったみたいで 新しいフォルダをそのフォルダの下に作って実行したら、うまく動作致しました。 他のCGIはそのフォルダでも動作していたのでなぜ私が作ったCGIだけがうまく動かなかったのかわかりません。 沢山の皆様にご回答を頂き感謝しております。 ありがとうございました。
補足
1.パーミッションは755にしております。 ちなみに777でも試してみましたが駄目でした。 2.Perlへのパスは他のCGIと同じです。 「#!/usr/bin/perl」もすでに試しておりますが、駄目でした。
- noopee
- ベストアンサー率38% (114/297)
こんばんは。 エラーメッセージが指していることは確認されましたか? パーミッションは755になっていますか??
お礼
ありがとうございました。 無事に解決致しました。 理由はよくわからないのですが、 そのフォルダがよくなかったみたいで 新しいフォルダをそのフォルダの下に作って実行したら、うまく動作致しました。 他のCGIはそのフォルダでも動作していたのでなぜ私が作ったCGIだけがうまく動かなかったのかわかりません。 沢山の皆様にご回答を頂き感謝しております。 ありがとうございました。
補足
パーミッションは755にしております。 フォルダも同様です。 777でも試してみましたがだめでした。
お礼
ありがとうございました。 無事に解決致しました。 理由はよくわからないのですが、 そのフォルダがよくなかったみたいで 新しいフォルダをそのフォルダの下に作って実行したら、うまく動作致しました。 他のCGIはそのフォルダでも動作していたのでなぜ私が作ったCGIだけがうまく動かなかったのかわかりません。 沢山の皆様にご回答を頂き感謝しております。 ありがとうございました。