• 締切済み

サーバで上手く動かない?

こんばんわ。 お世話になっています。 アクセス集計を行うCGIがあるんですが、ローカルでちゃんと動作確認できたのにサーバにあげたら上手く動いてくれません。 CGIはあるログファイルからデータがあればカウントしてグラフ化し表示するものです。 一応、ちゃんとサーバ上で動作していたものらしい上、ローカルでちゃんと動作したのでスクリプトミスと言うことはないと思います。 考えられるとしたらパーミッションの設定かと思い、700,705,755,777と試したのですが結果は変わりありませんでした。 他に考えられる原因があるとすれば何かありますか? ちなみにローカルで動作させた際のOSはWindowsです。 サーバはUnixですが、動作していたと思われるサーバもUnixでした。 Perlのバージョンは共に5.6です。 よろしくお願いします。

みんなの回答

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.3

apacheを使用している前提です。(linuxでのみ確認) 1.スクリプト aaa.cgiを/home/bbb/public_htmlで実行した場合です。(bbbは各ユーザ名) 1)suexecを使用している場合は、public_html及びaaa.cgiのパーミッションを共に755にする必要があります。 2)suexecを使用しない場合は、多少制約がゆるくなります。(777でもOKなど) apacheのログは、どのようなものを出力していますか。 1)Premature end of script headersの場合は、suexec関連の可能が高いです。suexecのログを参照してください。 2)Options ExecCGI is off in this directoryの場合は、apacheの設定の問題(CGIの実行をそのディレクトリで許可していない)になります。 linux(redhat9) Apache/2.0.40では、 apacheのログは/var/log/httpd/error_log suexecのログは/var/log/httpd/suexec.logとなります。 apacheに関しては apche1.3の場合はhttp://httpd.apache.org/docs/ apahe2.0の場合はhttp://httpd.apache.org/docs-2.0/ を参照ください。

nana_ko
質問者

お礼

みなさんありがとうございました。 質問後、いろいろと見直し等行ってみました。 改行コードが一ヶ所のみ、Windowsの改行コードになっていたためでした。 ローカルがWindowsだったため、サーバで動かないのは当然ですよね^^;;; いろいろ指摘していただき、ありがとうございました。 この場を借りてお礼申し上げます。

  • the845t
  • ベストアンサー率33% (246/743)
回答No.2

Perlのパスの他に、 requireとかで呼び出す時に、 Windowsだから\を使ったのでは? それを変えてみるとか。

  • stouma
  • ベストアンサー率35% (142/399)
回答No.1

先頭行での #!/usr/local/bin/perl(相手のサーバ環境により異なる) は適切に記載されていますか? ご確認下さい。