- ベストアンサー
perlのパスに-wをつけないと500エラーに
- サーバー会社のトラブルで移転しなければならなくなったのですが、移転後、cgiの挙動がおかしくなってしまいました。
- なぜかperlのパスに-wをつけないと500のエラーになってしまう状態です。
- 考えられる原因はどのような事がございますでしょうか。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>こちらは旧サーバーからファイルをtar.gzで圧縮してローカルに落とし、新サーバーへtar.gzをバイナリ転送後、新サーバー側で展開する形で移転しましたので転送モードの相違はないと思いますがどうでしょうか。 と言うことですが、症状からすると改行コードの問題(もしくは目に見えない文字の問題)です。 サーバーにログオン出来るなら、 $ cat -v xxxx.cgi | head で、 #!/usr/local/bin/perl と表示されるか(これが正常)、あるいは、 #!/usr/local/bin/perl^M と表示されるか、あるいは、^Mでない別の何かがくっついてないか、確認してください。 あと、可能ならapacheのエラーログを確認してください。
その他の回答 (2)
- engineeeer
- ベストアンサー率65% (19/29)
No.1です サーバのデータはどうやって移転しましたか? FTPでアスキーモードにしないで送信したりしてないでしょうか。 実際に手元のサーバで試してみました。 -- testes.pl -- #!/usr/bin/perl print "test\n"; ------------- [アスキー転送の場合] $ ./testes.pl test [バイナリ転送の場合] $ ./testes.pl -bash: ./testes.pl: /usr/bin/perl^M: bad interpreter: No such file or directory 続いて、バイナリ転送のスクリプトを修正。 -- testes.pl -- #!/usr/bin/perl -w print "test\n"; ------------- $ ./testes.pl test -- testes.pl -- #!/usr/bin/perl -- print "test\n"; ------------- $ ./testes.pl test 的外れでしたらすいません。
お礼
お忙しいところ何度もご回答をいただき本当にありがとうございます。 おかげさまで原因がわかり解決に至りました。
補足
お忙しい中、お手数をおかけして申し訳ありません。 ありがとうございます。 >サーバのデータはどうやって移転しましたか? >FTPでアスキーモードにしないで送信したりしてないでしょうか こちらは旧サーバーからファイルをtar.gzで圧縮してローカルに落とし、 新サーバーへtar.gzをバイナリ転送後、新サーバー側で展開する形で移転しましたので 転送モードの相違はないと思いますがどうでしょうか。 念のため、FTPで直接アスキーモードで転送してみましたが、同じ状況のようです。 何かサーバー側の設定の問題であるような気がしていますが・・・・。
- engineeeer
- ベストアンサー率65% (19/29)
#!/usr/local/bin/perl -- これでも動きますか?
補足
お忙しい中、ご回答いただきましてありがとうございます。 #!/usr/local/bin/perl -- で試させていただきましたところ動作するようです。 何か原因がわかりますでしょうか。 ネットで調べてみたのですが、改行コードの問題だそうですが CR+LFのものをLFに保存しなおしてアップロードしても500エラーになります。 サーバー側で何か設定や変更等をしなければならないのでしょうか。
お礼
解決の糸口をご教授いただいたおかげで 解決できました。 本当に助かりました。 ありがとうございました。
補足
お忙しい中、ご回答いただきありがとうございます。 $ cat -v xxxx.cgi | head でやってみましたところご指摘の通りの状態となりました。 #!/usr/local/bin/perl^M ^M print "Content-type: text/html\n\n";^M ^M print "test";^M ^M exit;^M ^M >あと、可能ならapacheのエラーログを確認してください。 Premature end of script headers: perlスクリプト名.cgi と言うエラーが見つかりましたので、それを検索で調べてみましたら サーバーのFTPの設定に問題がある事がわかりました。 (参考サイト) ttp://smile.uh-oh.jp/perlerror500.html こちらの通りに設定をして反映させた結果、無事に稼働するようになりました。 皆様がいろいろとご教授いただいたおかげで解決することができました。 本当にありがとうございました。