- ベストアンサー
何がいけないんでしょうか?
test.cgiの内容↓ #!/usr/bin/perl print "Content-type: text/html\n\n"; PRINT "<HTML>"; PRINT "<BODY>"; PRINT "おはよう"; PRINT "</BODY>"; PRINT "<HTML>"; 500 Internal Server Error というメッセージが出ます。 どうしてですか?
- みんなの回答 (12)
- 専門家の回答
質問者が選んだベストアンサー
>実行権限はどうやって設定、確認すればいいんですか? とのこと・・・ aibibuさんは、FTPソフトは何を使っているのでしょうか? もし、Windowsで有名なFFFTPであれば、サーバーにアップロード後 そのファイルを右クリックし「属性の変更」をクリック そして通常なら「755」でOKです。 755にしてもだめな場合は777にしてみてください。 以下、参考のURLをはっておきます。 σ(^_^)の持っている環境では #!/usr/bin/perl print "Content-type: text/html\n\n"; print "<HTML>"; print "<BODY>"; print "おはよう"; print "</BODY>"; print " で、「755」にしてちゃんと動きます。
その他の回答 (11)
とくと句のヘルプを見るとパーミッションは700にしてほしいという風に書いてあるので、755や777では実行できないのでは? 間違いがありましたらご指摘ください。 ではでは☆
- Lio
- ベストアンサー率44% (13/29)
サーバーがトクトクらしいので、UNIX系OSでのパーミッションの確認方法を挙げます。 tok2はtelnetログインが許可されていたはずです。 1、「Windowsのファイル名を指定して実行」から「telnet」と入力し、起動する。 2、Windows2000の場合ですが、「telnet> opne www??.tok2.com」と入力する (??は自分の登録しているサーバーの番号) 3、tok2の自分のアカウントを入力 4、FTPでアップロードするときのパスワードを入力(*などは表示されません) 5、左側が「tok2$」になっていたらとりあえずOKです。 6、[tok2$ cd CGIをアップしているフォルダー名]を入力します。 7、「tok2$ ls -la」を入力します。 -rw-r--r-- 1 lio member 38 Nov 20 06:52 test.cgi のような表示がいっぱい出てくると思います。 このときの-rw-r--r--がパーミッションを表します。 CGIの実行には通常 -rwxr-xr-xになっている必要が有ります。 もしなって居ないようであれば、 [chmod 755 test.cgi」と打ち込んでください。 CGIの方ですが、 私の家のUNIXマシンでは下記の見本では動きませんでした。 これだと動きます。 #!/usr/bin/perl print "Content-type: text/html\n\n"; print "<HTML>\n"; print "<BODY>\n"; print "<p>おはよう</p>\n"; print "</BODY>\n"; print "<HTML>\n"; exit(); です。printは小文字で、 ;の前に\nを入れてください print "Content-type: text/html\n\n"; の後には改行をいれるのが慣例となってるそうです
- pmmaohm
- ベストアンサー率27% (230/822)
しばらくCGIさわってないので、すっかり忘れているので、 もしかしたら、まだ抜けていることがあるかもしれません。 CGIのファイルを置くディレクトリは自分で自由にできるんでしょうか。 もしそうだとしたら、そのディレクトリのパーミッションを 何とかしています?数値、忘れました。(^ ^;; 奮闘しているパソコンのOSは? Windowsだと思うのですが、まさかまさかLinuxなんかじゃないです? 配布されているCGIのほとんどはWindowsで作られているようで、 Linuxでいくらがんばってもうまくいかなかったことがあります。 文字の改行コードがsjis-dosになっていたんです。 Linux上だとこれをeuc-jpにしたらうまくいったことがあります。 たぶん、関係ないと思いますが。
- xjd
- ベストアンサー率63% (1021/1612)
#5です。 >よく意味がわかりません >どうやってかくにんするんですか? 「よく意味がわかりません」ということは何も設定していないと判断しました。 aibibuさんがtest.cgiをWEBサーバにアップロードするソフトの機能に、ファイルの属性を変更する機能があるはずです。 たとえばFFFTPなら「コマンド」->「属性変更」でtest.cgiの属性をCGI用に変更できます。 どんな属性を設定するかは、各ホームページのCGI利用方法等に書かれているはずです。 属性に問題がなければ、test.cgiのperl文法ミスという事になります。 ひとつずつ解決していってください。
- xjd
- ベストアンサー率63% (1021/1612)
#5です。 前回のあなたの質問に回答しましたが、むずかしいですか? ------------------------------------ http://www.okweb.ne.jp/kotaeru.php3?q=412018 ここに解説のページがあります。 トクトクサポートコーナー http://tok2.com/study/index.html TripodCGI http://home.tripod.co.jp/help/tool/tripodcgi.html ------------------------------------
お礼
すみません 前回の質問のことを今の質問の所にしないでください。 せっかく回答してもらったのに本当にすみません。
実行権限がないとかじゃないですか? ついでにですが、ご自分のサイトのURLを書くことは、規約にて禁じられているはずですが・・・ それと、#!/usr/bin/perlと次の行の間に改行を入れなくても、動作はしているみたいですが・・・ #コマンドラインでの話ですが・・・ 間違いがありましたらご指摘ください。 ではでは☆
補足
実行権限はどうやって設定、確認すればいいんですか?
- xjd
- ベストアンサー率63% (1021/1612)
test.cgi の属性(パーミッション・オーナ)はどうなっていますか? WEBサーバがCGIとして認識できる属性になっていますか?
補足
よく意味がわかりません どうやってかくにんするんですか?
- nas_tommy
- ベストアンサー率66% (2/3)
一行空けてみる。 #!/usr/bin/perl print "Content-type: text/html\n\n"; print "<HTML>"; print "<BODY>"; print "おはよう"; print "</BODY>"; print "</HTML>";
- pmmaohm
- ベストアンサー率27% (230/822)
全然自信なしです。 >#!/usr/bin/perl >print "Content-type: text/html\n\n"; この1行目と2行目のあいだ、空白行、いりませんでした?
補足
#!/usr/bin/perl print "Content-type: text/html\n\n"; print "<HTML>"; print "<BODY>"; print "おはよう"; print "</BODY>"; print "</HTML>"; exit; にしました しかしなりません それと 1.パーミッションはあっていますか? トクトクでは各ユーザーの権限でCGIが動作します。 CGIのパーミッションは700です。 CGIを設置するディレクトリーのパーミッションは701で動作します。 パーミッションについての詳しい説明をお読みください。 それ以外の場合はFTPソフトなどでCGIファイルのパーミッションを正しく設定してください。 2.CGIで使用されるファイルのパスはあっていますか? あなたのディレクトリー(フォルダ)のフルパスは /home/member/あなたのアカウント/です。 3.sendmailを使用しようとしていませんか? sendmailは使用できません。 4.配布されているCGIを設置する場合 配布されているままの状態(改造をしない)で設置してみてください。 ● Perlで作成されている場合 1.Perlのパスはあっていますか? #!/usr/bin/perl 2.文法の間違いはありませんか? もう一度ソースをチェックしましょう。 細かいミスはありませんか。 例えば、「;」「"」 「'」 は抜けていませんか。 という注意がありました
- Hi_De
- ベストアンサー率0% (0/3)
間違ってたらごめんなさい。 多分最後の行に "exit;" を入れたら動くと思います。 あと、最後の"PRINT "<HTML>"; ですがこれは"PRINT "</HTML>"; に修正したほうがいいです。 以上です。
補足
#!/usr/bin/perl print "Content-type: text/html\n\n"; print "<HTML>"; print "<BODY>"; print "おはよう"; print "</BODY>"; print "</HTML>"; exit; に直しました しかしできません。
- 1
- 2
お礼
ありがとうございます。 動きました。 RootFTPを使ってんですが、属性の変更をしたら、動きました。