『ネットオウルユーザーコミュニティ』の提供に伴い、『Q&A掲示板』は2025年3月31日正午をもって提供を終了します。[関連ニュース]

メンバーメニュー

ようこそ、ゲストさん

トップ > カテゴリ一覧 > 各種プラン > CGIプログラムが実行できない

質問

  • ライト

    CGIプログラムが実行できない
  • 本文:

    hello.cgi
    をドメインの真下に作って、
    権限を755にして

    ファイルの中身は
    #!/usr/bin/perl

    # レスポンスヘッダの出力
    print "Content-type: text/html; charset=Shift_JIS\n\n";

    # HTML本体の出力
    print "<html>\n";
    print "<body>\n";
    print "<p>CGIの世界へようこそ!</p>\n";
    print "</body>\n";
    print "</html>\n";
    上記です。

    http://www.netnotukaikata.info/hello.cgi
    と入力しても 500 internal server error がでます。

    また cgi_private とフォルダを作って、権限は777で、その下に上記と同じ hello.cgi を置いても 500 internal server error が出ます。権限は755です。
    cgiが実行できないのでしょうか?

  • 緊急度:通常投稿者:blueseabluemoonさん投稿時間:2018/10/06 17:52
質問に対する回答は締め切られました

回答 No.7599

  • この回答がベストアンサーです

  • 本文:

    スターサーバーの有料プランですよね?
    であれば、CGIは実行可能です。

    755 で合っています。
    Forbidden とかにはなっていないですし、

    > 500 internal server error
    おそらく、サーバ上でこのスクリプトファイルを実行しようとしたときにエラーが出ているからでしょう。

    このスクリプトファイルの改行コードは合っていますか?
    CR+LF や CR ではなくて LF です。

    あと、 Shift_JISで保存しているのかと思いますが、
    スクリプトにつかう文字コードセットは、
    Shift_JIS はやめたほうがよいと思います。
    EUC-JP か UTF-8 のほうがよいです。

    スターサーバーの「ファイルマネージャー」上で、編集機能を用いて、文字コードをUTF-8、改行コードをLFに設定してファイルを保存して試してみてください

  • 投稿者:ayaguchiさん 投稿時間:2018/10/06 18:34

回答 No.7600

  • 本文:

    補足ですが、

    ・UTF-8 で保存するなら
    print "Content-type: text/html; charset=Shift_JIS\n\n";
    の部分ももちろん書き換える必要があります。
    (Shift_JIS → UTF-8)

    ・FTPクライアントを用いてアップロードしているのでしたら、
    ASCII(アスキー)モードでアップロードすると改行コードに関しては自動的に変換されます。

    文字コードに関しては、高機能なFTPクライアントであれば変換機能もあるかもしれませんが、
    通常は、もともとのファイル自体を適切な文字コードにしておきます。

  • 投稿者:ayaguchiさん 投稿時間:2018/10/06 18:44

回答 No.7601

  • 本文:

    ... まあ、テキストファイルを保存するときの文字コードでは?

    〇 hello.cgi は、ちゃんと Shift_JIS で保存していますか?
    (UTF-8の BOM付だと、確かに 500エラーになりますね)

    〇 日本語をまったく含まないサンプルでも、エラーになりますか?
    例えば、

    #!/usr/bin/perl
    print "Content-type: text/html; charset=Shift_JIS\n\n";

    print "<html>\n";
    print "<body>\n";
    print "<p>Hello CGI world!</p>\n";
    print "</body>\n";
    print "</html>\n";

    では?

    〇同じファイルをファイルマネージャの方で保存しなおしても500エラーになりますか? (文字化けはあったとしても別の理由なので、ここでは気にしない)

  • 投稿者:ジョバンニさん 投稿時間:2018/10/06 19:13

回答 No.7602

  • 本文:

    遠い昔のマイクロソフトのサーバーのASPの者なので、こんな落とし穴があるなんて解んないですよ、文字コードとリターンコードなんて、shift-jisじゃないと携帯のブラウザで読めないのでは?

  • 投稿者:blueseabluemoonさん 投稿時間:2018/10/06 19:59

回答 No.7603

  • 本文:

    > shift-jisじゃないと携帯のブラウザで読めないのでは?

    ほぼ完全に廃れた感のあるi-mode ですら、5〜6年前には、utf8に対応しています。
    どのみち、いわゆるガラ携のブラウザは、TLS1.2 に対応していないので、もう無視していいのではないかと思いますよ。
    (強いて言えば、らくらくフォン対応をどうするかくらいかと。)

  • 投稿者:ジョバンニさん 投稿時間:2018/10/06 20:21