• 締切済み

「#!/usr/bin/perl --」でなければ動作しないのはなぜ?

新しい職場に来て、あるCGIの設定を依頼されたのですが、どのような設定になっているのか、どのプログラムをアップしても「Internal Server Error」になってしまいました。 人に聞いて、「#!/usr/bin/perl」を「#!/usr/bin/perl --」としなければ動かないことまでは分かりました。 確かに、先に他の方が作成されたらしいCGIプログラム(単純な構成のものばかりです)ではすべて「#!/usr/bin/perl --」となってました。 こうしなければ、どんな簡単なプログラムでも絶対に動かないようです。 「*.cgi」というファイルが1つのみ(他の構成ファイルは他の形式)というプログラムならその方法で動いたのですが、複数の「*.cgi」ファイルで構成されているものはどうしても動きませんでした。 構成するファイルの中に、先頭に「#!/usr/bin/perl」の行がないファイルもあるのですが、もしかしてそのせいでしょうか? その場合、どうしたら解決できますか? そもそも何が原因なのでしょう? 今まで、色々な会社でCGIをいじってきましたが、初めての経験で戸惑っています。 FFFTPの設定(開業など)の問題ではないように思えるのですが、サーバーの設定がおかしいのでしょうか? 「#!/usr/bin/perl --」としなければ絶対に動かないというのは、どういう場合に起こる現象なのですか?

みんなの回答

  • kumoz
  • ベストアンサー率64% (120/185)
回答No.4

下記の URL で同じ問題を取り上げています。参考になるかも、

参考URL:
http://sakaguch.com/PastBBS/0032/B0016504.html
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.3

--」でコマンドラインオプションの終端を明示しなければならない理由って正直思いつきませんが、必要な環境であれば付けるしかないですね。 No.2に付随して・・。サーバのOSは何でしょうか?ローカルで改行コードを(サーバに)合わせていても「--」が必須になりますか? >複数の「*.cgi」ファイルで構成されているものはどうしても動きませんでした。 これは別の原因と思うのですが・・。一度に起動されるのはアクセスした1ファイルだけですから。

ruristar
質問者

お礼

ご回答ありがとうございます。 サーバーのOSなどの詳細は分かりませんが、プロバイダーから提供される一般的なWEBスペースと同じ扱いだと思います。 社内の他の部署でプロバイダー業務をしており、そこの顧客という形でWEBスペースを提供されており、自分のディレクトリより上の階層は見られません。 そこから渡されたサーバーについての説明には、ユーザー名とパスワードといった情報のみで、CGIやsendmailへのパスは何だとかいうことも何も書かれてませんでした。 私も色々調べましたが、改行コードのエラーではないようです。 他の方が作成されたプログラムは単純なものばかりでしたが、すべて「 --」がつけられており、それがないと動かないようです。 どんなに簡単なプログラムでも「 --」をつけなければ絶対に動かず、構文の問題ではないようです。 先頭行に「#!/usr/bin/perl」のあるCGIファイルのみで構成されていればそこにすべて「 --」を追加すれば動くのですが、それを入れなくても動くようにしたいです。 これはサーバー管理者に問い合わせる以外、解決は無いのでしょうか? 問い合わせたら先頭行に「 --」をつけるしか思いつかないと言われたのですが、担当のSEの方自体、そんなに知識がないみたいです。 「 --」をつけなければ絶対に動かないようなサーバーは初めてですので、どうして良いのかわかりません。

  • outbrave
  • ベストアンサー率60% (231/380)
回答No.2

FFFTP の設定および操作で、cgi ファイルがアスキーモードで転送されているのなら問題ありません。 おそらくサーバー側の問題で、FTP サーバーの設定でアスキーモードでのアップロードが許可されていないと思います。 >複数の「*.cgi」ファイルで構成されているものはどうしても動きませんでした。 その原因がサーバーの設定かどうかは特定できません。 >先頭に「#!/usr/bin/perl」の行がないファイルもあるのですが 実行ファイル以外のデーターファイルなど、その記述はありません。

  • wp_
  • ベストアンサー率54% (132/242)
回答No.1

ここで聞いても無駄です。誰も分かるはずありません。 その職場のサーバの設定を行った人に聞いてください。

ruristar
質問者

お礼

ご回答ありがとうございます。 それは、サーバーの設定に問題がある可能性があるということでしょうか? おそらく、サーバーの設定をしたのは、関連会社のプロバイダーです。 最初、簡単なプログラムも動かなかったので、人に聞いたら、他の部署のSEと思われる方が来て、「#!/usr/bin/perl」を「#!/usr/bin/perl --」としてくださいと言われただけで、それ以上は何も言わなかったのです。 私はあまり詳しいことは分からないので、プログラムがおかしいのか、サーバーがおかしいのかすら分からないのですが…。

関連するQ&A