• 締切済み
  • 困ってます

「#!/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 --」としなければ絶対に動かないというのは、どういう場合に起こる現象なのですか?

共感・応援の気持ちを伝えよう!

  • 回答数4
  • 閲覧数6433
  • ありがとう数4

みんなの回答

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

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

参考URL:
http://sakaguch.com/PastBBS/0032/B0016504.html

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • #!/usr/bin/perl --でも不安定です

    #!/usr/bin/perl ですと全く表示されず、Internal Server Error. #!/usr/bin/perl -- でも30%ぐらいしか画面表示されません。 サーバのファイルをTeraTermで見てもおかしなファイルが見当たりません。 問題のファイルを調べる方法はありますでしょうか? Carpモジュールをuseしても相変わらずInternal ServerError.でさっぱり見当がつきません。

    • ベストアンサー
    • Perl
  • #!/usr/bin/perl --

    IEでPerlのgciにアクセスすると 500 Internal Server Error だったので、 #!/usr/bin/perl の次に -- を加えて再びIEでアクセスするとエラーはありませんでした。 普通に#!/usr/bin/perlのソースで正常に動作するように したいのですが、解決策は分かりませんか? -- というのはどういう意味ですか? そうしてみれば動くことがあると聞いて試したものです。

    • 締切済み
    • CGI
  • perlの1行目が#!/usr/bin/perlだと動かず#!/usr

    perlの1行目が#!/usr/bin/perlだと動かず#!/usr/bin/perl5.8.9だと動くのですが、 #!/usr/bin/perlで動くようにするにはどうしたらいいのでしょうか? インストールされているperlは This is perl, v5.8.9 built for darwin-2level です。 どこかでパスの設定をしてやればいいと思うのですが、 どこに何を書けばいいのかよくわかりません。 環境はMacOsX v10.6 SnowLeopardです。 どなたかよろしくお願いいたします。

    • ベストアンサー
    • Perl
  • 回答No.3
  • shimix
  • ベストアンサー率54% (865/1590)

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

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

  • 回答No.2

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

共感・感謝の気持ちを伝えよう!

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

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

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

関連するQ&A

  • #!/usr/local/bin/perlで命令が出せません。

    プログラミングのド素人で、独学でwindows上でcygwinを使っている者から質問させていただきます。「#!/usr/local/bin/perl」というコマンドをプログラムの先頭に書いて、[ファイル名]を入力してcygwinで命令をしたところ、命令が実行できず、「commond not found」と出てしまいました。そこで、ネット上で、いろいろ調べて、試してみたのですが、どうしても、解決できません。 どなたか、アドバイスをいただけないでしょうか? ちなみに、perl [ファイル名]では、命令を実行することができます。「type -a perl」というコマンドを入力すると、「/cygdrive/c/Perl/bin/perl」というのがでてきたので、「#!/cygdrive/c/Perl/bin/perl」というコマンドを書いても上手くいきませんでした。 ちなみに、私が書いたプログラムは、以下のようなものです。 #!/cygdrive/c/Perl/bin/perl (あるいは#!/usr/local/bin/perl) # hello -- 挨拶のプログラム print ("hello");

    • ベストアンサー
    • Perl
  • #!/usr/local/bin/perlの変更。

    ┬ cgi_script │   └***.cgi │ └ access_g     └11111       └22222         └***.cgi 今まで、cgi_scriptフォルダの直下にあるcgiファイルの一番上の行は #!/usr/local/bin/perl できちんと動作していました。 今は、そのcgi_scriptフォルダと同じところにあるaccess_gフォルダの中にある、 11111フォルダの下の2222フォルダの下にあるcgiファイルを実行させたいのですが、 #!/usr/local/bin/perl をどのように変更していいかわからなくなってしまいました。 動作させたいcgiファイルはcgi_scriptフォルダの中に入れたところきちんと動作したので、 動作上の問題はないと思われます。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • CGI
  • #!/usr/local/bin/perlとしたい

    WindowsXP上でCGIを動作させる環境を構築しています。 しかし、サーバにアップロードする際にいちいちPerlパスを変更するのが 面倒なので、「#!/usr/local/bin/perl」と、基本的なディレクトリ指定にしたいです。 (サーバそうでなければ結局指定し直しですが) 現在、「#!c:/perl/bin/Perl」で動かしています。 どうすれば出来るでしょうか?ご教示願います。 ちなみにApacheは2.0.55です。

    • 締切済み
    • CGI
  • Xamppでperlが表示されない

    Linux初心者です。 ubuntu8にXamppインストールして、htdocsにtest.cgiを入れて、http://localhost/test.cgiにアクセスすると、 「Internal Server Error」がでます。 test.cgiの内容は 「 #!/usr/local/bin/perl 」 の一行のみです。 ちなみに、おなじhtdocsディレクトリにPHPのファイルを入れてテストしたところ正常に動作しました。 ご教示願います。

  • CGIのパス /usr/bin/perl--

    こんにちは。CGIの最初のパス名をusr/bin/perl --と「ーー」をつけないと動かないCGIがあります。「ーー」はなんの意味なんなのでしょうか?

    • 締切済み
    • CGI
  • ActivePerlで#!/usr/bin/が無効

    WindowsXPにActivePerl(5.16.3.1603)をインストールして、 コマンドラインに「perl script.scr」と入力して スクリプトファイルは実行できるのですが、 スクリプトファイルの1行目に「#!/usr/bin/perl」を記述して、 コマンドラインに「script.scr」と入力して実行しようとすると、 「C:\・・・\script.scrは有効なWin32アプリケーションではありません。」 というメッセージが表示されて正しく実行できません。 perl.exeのあるフォルダをC:\usr\binフォルダにして、 1行目を #!/usr/bin/perl #!C:/usr/bin/perl #!C:\usr\bin\perl などいろいろ試してみましたが、どれも 前述のメッセージが表示されて実行できませんでした。 コマンドラインに「script.scr」と入力するだけで 実行することができるようにするには どのようにすればいいのでしょうか。 script.scrの拡張子scrをplなどに変更して この拡張子のファイルに対してperl.exeに関連付けることにより script.plだけでも実行できるようにはなりますが 拡張子.scrではこの関連付けができませんので #!/usr/bin/perl等を使用する方法で解決したいです。 ジャンクションとかApacheなどが全く分かりませんので これらを使わずに簡単にできる方法がありましたら教えてください。 (なお使っても分かりやすい手順があれば可です) よろしくお願いします。

    • ベストアンサー
    • Perl
  • Perlのパス

    レンタルサーバーのCGIの説明で、「1.perl のパスは、/usr/bin/perl です。2.プログラムの先頭の記述は必ず、#!/usr/bin/perl となります。」って書いてあるんですけど、これを使用する場合、 http://www.kent-web.com/data/cart.html たぶん、admin.cgi , cart.cgi , order.cgi を エディタ で開いて以下の箇所をあたまの部分、#!/usr/bin/perl を変えればいいんですかね?それで1.の/usr/bin/perl は何処に書くのかな?それとも説明 の前置きですかね?「1.perl のパスは、」という意味はリンクがこうなるよ!って意味ですかね? ただま、KENT WEBみながら苦戦してます。 シロウトですいません。

    • ベストアンサー
    • Perl
  • PERL 宣言文 -wについて

    Perl初心者のWEBサーバエンジニアです。 サーバの移行に伴ってCGIファイルが動作していないため、ご相談になります。 【サーバ環境】 perl実行パス      /usr/local/bin/perl シンボリックリンク   /usr/bin/perl => /usr/local/bin/perl ソース記述       #!/usr/bin/perl ヴァージョン      5.8.5 perl実行環境      http://△△△.jp/cgi-bin/ ※apacheのスクリプトエイリアス指定 options +ExecCGI -Include SetHandler cgi-script 上記の環境で、cgiファイルが500internalサーバエラーになる現象が発生しています。 ファイルは以前動作したサーバから引っ張ってきました。 原因を探っていたのですが、cgiファイルのソース記述を #!/usr/bin/perl -w と記述を変更すると正常に動作しました。 -w について 【1度しか出現しない識別子や、初期化されずに参照される変数など、危険、無駄と思われる処理の警告を出力します。実際にはもっとたくさんの種類のチェックをするようです。】 と言う事はわかりましたが、いままで、-wなしで動作していたので、-wなしで動くよう、perlの設定を変更したいとかんがえております。 なにぶんPERL初心者ですので、同様の事象で知見がある方、ご教授を宜しくお願いいたします。

    • ベストアンサー
    • CGI
  • perlのcgiが動かない・・・

    cgiを組もうと思い、まずは簡単なもので試そうと思ったのですが、 うまくいかず困っています。 ↓プログラムは、こんな感じです。 ファイル名:index.cgi #!/usr/bin/perl print "<html>"; print "<body>"; print "abc"; print "</body>"; print "</html>"; <やってみたこと> ・Perlのパス「#!/usr/bin/perl」 が間違っていないか? which perl で /usr/bin/perl とでます。 ・Apache の設定が正しく行なわれているか? http://localhost でindex.htmlがきちんと表示できています。 ・「hello.cgi」 の設置場所を間違っていないか? プログラムソースが出るということは、 間違っていないのではないでしょうか? ・ためしに実行してみた TELNETで ./index.cgi <html><body>abc</body></html> とでてきました。 これはちゃんと動いているのでは?? 何か勘違いしていますか? お気づきの点を教えてください。よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • MacOS10.3.9でApache1.3.33のhttpd.confの設定

    通常のhtmlは見れますが、どうしてもcgiがinternal server errorになって、どうしても動きません。パーミッションも設定したのですが、もう限界です。 perlとphpが動く設定済みのファイルをアップしていただけませんか?それを見比べながら、再度挑戦してみたいと思います。

専門家に質問してみよう