- 締切済み
見本のCGIをマニュアル通りに置いたのですが
CGIのテキストどおりに、サンプルCGIをサーバに置いたのですが 下記のようなメッセージがでます。 CGIWrap encountered an error while attempting to execute this script: Error Message: Exec format error Error Number: 8 This message usually indicates there is a problem with the script itself. Often this indicates either that the #! line of the script is incorrect, or the script was uploaded in binary mode instead of ascii mode. Check to make sure that the script does not have control-M's at the end of every line. That will prevent it from executing. An easy fix that takes care of this most of the time is to put '#!/.../perl --' instead of '#!/.../perl' on the first line of the script. This is typically a problem if the script was edited or uploaded from a DOS/Windows/Macintosh station to a unix based server. If you are not the owner of this script, please forward this error and the URL that caused it to the script owner. That is often the component in the URL right after /cgiwrap/. 英語がさっぱり分からないのでなにがどうまずいのか全くわかりません。 メッセージの意味の分かる方是非、解説お願いします。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- nightowl
- ベストアンサー率44% (490/1101)
すみません、No.5 について訂正させてください。 (誤)バイナリモード→(正)テキスト(アスキー)モード でした。 あと、参考 URL も見てください。
- nightowl
- ベストアンサー率44% (490/1101)
最後の2行も気になりますね。 行末が LF のみでバイナリモードでもだめならこれが一番臭いかな? 「あなたがこのスクリプトの所有者でなければ、 このエラーと URL をスクリプトの所有者に転送してください」とあります。 所有者権限が管理者のものになっていると考えられます。 エラーメッセージが「/cgiwrap/」の直後の URL 文字列に含まれているのではないですか? 管理者にその旨伝えてみるほかないと思います。
あっ、ごめんなさい。よく英語を読まずに回答してしまいました。他の方の回答が正しいと思います。
- MovingWalk
- ベストアンサー率43% (2233/5098)
英語が得意でなければこちらを利用してみてください。 http://www.excite.co.jp/world/text/ control-M's(CR)が行末にあるのでこれを除去する必要があります。 Windows環境からUNIX環境にFTPで転送したのでしたら、もう一度転送しなおして下さい。 その時は、転送モードを、バイナリモードではなく「テキストモード」にしてください。
お礼
回答有り難うございます。 まだ、色々試しましたがまだ、うまくいきません。 自力でもう少し頑張ってみます。
- nightowl
- ベストアンサー率44% (490/1101)
DOS または Windows または Macintosh で作成したスクリプトを UNIX サーバにアップロードしたときに起こる典型的な問題だと書いてありますね。 Windows と UNIX とでは行末の改行コード(前者は CR+LF、後者は LF のみ)が異なることが原因です。 余計な CR コードが邪魔になって実行できませんといっているのです。 CR(^M)コードを削除することができれば一番なのですが、手っ取り早い解決策として スクリプト1行目の「#!/.../perl」(Perl の絶対パスが入る)のところを 「#!/.../perl --」に書き換えれば動くとあります。 試してみましょう。
補足
アドバイス有り難うございます。もう少し聞いてもいいでしょうか? MACで作っていますが、改行コードは保存時にLFに変換しています。 それだけじゃいけないんでしょうか?
perlスクリプトの1行目は以下のようになっています。 例)#!/usr/local/bin/perl 「/usr/local/bin/perl」の部分は、使うサーバによって、異なります。 この部分は、「perlまでのパス」と呼ばれます。 使いたいサーバーの「perlまでのパス」を調べて直してください。 とりあえず、これがもっとも考えられる原因と思います。
お礼
早速のアドバイス有り難うございます。 パスの確認してみます。
お礼
色々とお手数かけてすみません。 参考URLをじっくり読んで勉強します。