• ベストアンサー

500 Internal Server Err で困ってます

私、CGI初心者なんですが、”500 Internal Server Err ”が出てしまい困ってます。 カウンターの設置し、きちんと動いているんですが、フォームを入力してもらい、ファイルに保存するCGI(Perl)です。このエラーはスクリプトにエラーがある時や、FTPで バイナリモードでスクリプトを送ってしまった時などに起こると本に書いてありました。なので、次の事を試してみたんですが・・・ ・TELNETでPERLの構文チェックと動作確認 ・FTPでアスキーで再度アップロード ・再度スクリプトを検証 ・念のため、ファイルの属性をチェック ・念のため、.htaccessをチェック(改行コードなど、・・でもカウンタプログラムが動いているから問題ないはずですよね??) 以上の事を試したんですがダメでした。 そこで、もっと簡単なスクリプト(簡単な標準出力だけを するもの)を動かしてみたんですが、やはりダメで、上記のチェックをやってみたんですが、ダメでした。 この簡単なスクリプトはCGIの本で一番最初に載っている ものでわずか10行のものです。 TELNETで動作も確認したんですが・・・ 何分、初心者なもので・・・考えられることがあったら 教えていただけると助かります。

  • CGI
  • 回答数4
  • ありがとう数7

質問者が選んだベストアンサー

  • ベストアンサー
  • marimo_cx
  • ベストアンサー率25% (873/3452)
回答No.2

#!/usr/local/bin/perl print "Content-Type: text/html\n\n:; print "<HTML><HEAD><TITLE>test page!</TITLE></HEAD>"; print "<BODY><H1>TEST</H1></BODY></HTML>\n"; これ、ちゃんと動くかやってみてもらえます? これが駄目なら.htaccessの記述がまずいか、サーバーの使い方 (特定ディレクトリじゃないと動かないなど)か、そもそもユー ザーのCGIを使用禁止しているかです。 あと良くあるんですが、スクリプトの中にshift-jisの日本語が 入っていると見かけどう考えてもおかしくないのに動かない事 がありますので、コメントを含めて2バイトコードが含まれてい るのであればEUC-jpに変換してください。

tarojerry
質問者

補足

御回答ありがとうございます。 書いていただいたものでやってみたんですが・・ やはりダメでした。何故でしょうか??? .htaccessに関してですが、同じディレクトリで自分で入れたカウンタプログラムがちゃんと動いてるんで・・・ 念のため、.htaccessの中身を書いてみます。間違いありますか? Options ExecCGI AddType application/x-httpd-cgi .cgi AddType application/x-httpd-cgi .cgi/ Options Includes AddType text/x-server-parsed-html .html AddType text/x-server-parsed-html .html/

その他の回答 (3)

  • shigatsu
  • ベストアンサー率26% (511/1924)
回答No.4

エラーログが見れれば一番簡単なんでしょうけどねぇ。 私はエラーログが見たいがために、うちのマシンにアパアッチとPerl入れました。デバッグ用に。 それはさておき、参考URLの方法をお試しください。 私がオンラインリファレンスにしている「とほほのWWW入門」のページです。

参考URL:
http://wakusei.cplaza.ne.jp/twn/wwwcgi7.htm
tarojerry
質問者

お礼

前にアドバイス頂いた方へのお礼文にも書いたんですが、 ディレクトリの属性の間違いでした。お騒がせしました。 「とほほのWWW入門」には前に少しだけ行ったことがあるんですが、改めていってみるといろいろ重宝しそうですね。今度、何かあったらまた利用してみようと思います。 ご親切にありがとうございました。また、解らないことがあったら教えて下さい。

  • marimo_cx
  • ベストアンサー率25% (873/3452)
回答No.3

んー、これだとどうなります? <-- .htaccess --> Options +ExecCGI +Includes -Indexes AddType application/x-httpd-cgi .cgi AddType text/x-server-parsed-html .html <-- end of .htaccess -->

tarojerry
質問者

お礼

2度にわたり、アドバイスありがとうございました。 下の方のお礼文にも書いたんですが、ディレクトリの属性の間違いでした。”777”にしていたんですが、セキュリティーの都合上、それでは動かないように設定してあるとのことです。カウンタが動いていたのでそれはないだろうと考えてしまいました。お騒がせしてごめんなさい。 どうもありがとうございました。初心者なんでまた何かあったら、教えていただけると助かります。

tarojerry
質問者

補足

んー、残念ながら動かないです。 カウンタも動かなくなりました。 せっかく書いていただいたんですが、ダメみたいです。 何か他に考えられる事ってありますか?

  • taba
  • ベストアンサー率61% (349/567)
回答No.1

後半の、 >もっと簡単なスクリプトを動かしてみたんですが、やはりダメ というところの詳細が分からないのですが、これはファイル出力はしないのですね? 前半部を読んだときに思ったのは、 ○保存するファイルのパス指定が間違っている ○保存するファイルないしディレクトリに書き込み権限が無い の2つですが、ファイル書き込みをしないものもダメなんですね。 カウンタが動いているということですが、それは同じディレクトリにtarojerryさん自身がインストールしたものですか? もしかすると、プロバイダが特定のディレクトリ配下でしかCGIの動作を認めていず、それでエラーになるということじゃないかと思ったりしたんですが。

tarojerry
質問者

お礼

質問してから短時間に丁寧なアドバイスありがとうございました。いろいろアドバイスを頂き試したところ、最終的にはディレクトリの属性の間違いということでした。 私はディレクトリの属性を”777”にしていたんですが ホスティングサービスに問い合わせたところ、”777” では、セキュリティーの都合上動かないようにしてあるとのことでした。カウンタが動いてるので問題ないと思っていたんですが・・・大変お騒がせしました。また、何かあったら教えて下さい。

tarojerry
質問者

補足

さっそくの回答、本当にありがとうございます。 後半部分に書いたスクリプトではファイル出力は行っていません。 カウンタを動かしているファイルと同じディレクトリに入れ、そこはプロバイダから指定されたディレクトリです。 前半、部分に対しての御回答は、これからさっそく確認してみます。

関連するQ&A

  • 500 Internal Server Error

    500 Internal Server Errorが出ます。 サーバ:CentOS6.4 サーバ側の文字コード:UTF-8 perlのパス:/usr/bin/perl index.cgiの文字コード:LF (サーバ上で直接作成) index.cgiのパーミッション:777 (パーミッションの問題を避けるためわざと、777に設定) ここで、サーバ上で直接実行 perl /var/www/html/index.cgi すると、正しく処理の結果が返ってきてエラーは出ません。 しかし、クライアントのブラウザでindex.cgiにアクセスすると、500 Internal Server Errorが出ます。 なお、index.cgiを設置するディレクトリはApacheで以下のように設定しcgiスクリプトを有効にしています。 <Directory “/var/www/html”> Options FollowSymLinks ExecCGI </Directory> AddHandler cgi-script .cgi .pl #AddDefaultCharset UTF-8 ******************************************************* 【/var/www/html/index.cgi】 #!/usr/bin/perl print "Content-type: text/html"; print "<html>"; print "<body>"; print "<p>"; print "CGI"; print "</p>"; print "</body>"; print "</html>"; スクリプトの文法に問題があれば、サーバ上で直接実行させた時点でエラーを吐きそうですし、 パーミッションは777にしていますし、Apacheの設定もcgiを有効にしているので 他に500 Internal Server Errorが出る原因が掴めません。 Apacheの設定で、#AddDefaultCharset UTF-8 として文字セットを無効にした場合は CGIスクリプトの方で何か追加してやらないと、文字化け以前の問題で必ず500 Internal Server Errorを吐くんですかね? ご指導のほどよろしくお願い致します。

    • ベストアンサー
    • CGI
  • なんでサーバーエラー??

    CGIをはじめて、まだまだ初心者です。 プログラムは、MS-DOSで構文チェックして、 OKとでるのに、サーバーエラーっておかしくないですか? もちろん、サーバは、自分のパソコンに アパッチいれて、Perlいれて確認するんですが、 何がエラーなんでしょう・・・? まだ、高級なCGIなど作れないので、 フリーのスクリプトをDLしてきました。 まず、構文チェックOK。 そして、Perl開いたまま、 ブラウザにアクセスします。 そうしたら、サーバーエラーとなるのです。 何を変えていったらいいのか教えて下さい。 (自分で作った簡単なアンケートフォーム とかは成功しました)

    • ベストアンサー
    • CGI
  • C言語で作成したCGIにて「Internal Server Error」

    こんばんは。CGIについて質問させて下さい。 現象: C言語でCGIを作成し、ローカルで動作しているApacheで 動作確認をしようとしたところ、 「Internal Server Error」が出てしまいました。 質問: 上記の現象が起こったのですが、C言語でCGIを実行するには なにが足りないでしょうか? 環境: OS:WindowsXP Webサーバ:Apache 2.0.61 Cコンパイラ:gcc 3.4.4(cygwin) 状態: ○「http://localhost:8080/」にアクセスすると「あなたの予想に反して・・・」画面は見れます。 ○「http://localhost:8080/cgi-bin/test.cgi」にアクセスすると、「Internal Server Error」が表示されます。 ○httpd.confの設定値(デフォルトから修正した部分) ・ServerName 127.0.0.1:8080 ・<Directory "C:/Program Files/Apache Group/Apache2/cgi-bin">内 Options none → Options ExecCGI ・#AddHandler cgi-script .cgi → AddHandler cgi-script .cgi ○Apacheのerror.log ~[error] [client 127.0.0.1] Premature end of script headers: test.cgi ○test.cgiのコンパイル前ソース ---ここから #include <stdio.h> int main(void){  printf("Content-Type: text/html\n\n");  printf("<html><body>Hello, World!</body></html>");  return 0; } ---ここまで ○test.cgiはcygwinにて標準出力を確認済み。 ・・・ちなみにperlでCGIを作成すると表示されます。 (ActivePerlインストール済み) perl側のソース ---ここから #! c:/perl/bin/perl print "Content-Type: text/html\n\n"; print "<html><body>"; print "Hello, CGI!"; print "</body></html>" ---ここまで なにかおかしな点がございましたらご指摘をお願い致します。

    • ベストアンサー
    • CGI
  • アクセスカウンタ

    プロバイダWAKWAKの無料HPサービスで、 アクセスカウンタを作成、設置しました ユーザー設定ガイド http://www.wakwak.com/support/setup/homepage/cgi/counter.html の通り、 txtファイルに、下記の記述を追加 <img src="/cgi-bin/Count.cgi?df=xxxxx|user=yyyyy"> xxxx はアクセスカウンタ名 yyyyyはFTPログインID を入力しました txtファイルは、『count.txt』とファイル名をつけて、保存 これを cgi-bin に アップロードして、 アドレスバーに下記の通り入力、表示しようとしましたが・・・ http://park21.wakwak.com/~○○○/cgi-bin/count.txt (○○○は私のFTPログインID) エラーの表示になってしまいました CGI Error The error was detected while processing this request. Be sure of followings: The CGI script does exist. The permission of CGI script is 755. The Perl path in CGI script is #!/usr/local/bin/perl. CGIスクリプトの呼び出し中にエラーが発生しました。 下記の点をご確認ください。 ・CGIスクリプトが存在すること。 ・CGIスクリプトのパーミッションが755であること。 ・CGIスクリプトのperlのパスが #!/usr/local/bin/perl であること。 アクセスカウンタが表示できない理由は何でしょうか?

  • これはサーバー側の設定?

    お世話になります。 ろくにperlも書けない初心者です。 Flash(SWF)内でメールフォームを作っています。 丁度良いサンプルがあり、そのCGI(perl)をそのまま拝借。 テスト用(自前)のサーバーでは問題なく動作。 ところが実際に使用するサーバーに上げてみると動かないのです。 仕組みとしては、swfからgetURLで変数(送信元、送信先、メッセージなど)をcgiへPOST送信。 cgiは未記入のモノがあったらerror、埋まっていればOKの変数を返す。 (swf内のテキストボックスを受信用に空けています) その変数によって、飛ぶフレームを判断、「送信完了」「送信エラー」などを表示する。 といったモノです。 CGIの設置位置(perlへのパス、cgiへのパス)は確認しました。 パーミッションも確認済み。 何より、返り値の無い、HTMLを生成するタイプのCGIは動作しています。 さて、どうすれば上手く表示されるか分かりませんか? サーバーによってそういった違いってあるのでしょうか? 念のため、仕様は以下の通りです。 ウェブサーバーソフト(httpd) Apache1.3.22 Cコンパイラ gcc (ver2.8.1)/usr/local/bin/gcc OS Solaris2.6 SPARC版 利用可能なPerl Perl5 ( 5.005_03 ) よろしくお願いします。

    • ベストアンサー
    • Perl
  • cgiのサーバー設置

    現在知り合いのHPを作っていてメールフォームを設置しようとしたところ 500番のエラーが出てしまいます。 同じメールフォームを別のサーバーに設置したところ正常に動作しました。 Perl文法チェッカーでチェックしたところ文法エラーとなり 「sh: perl: command not found」がでてきます。 本等を見ても対処方が見つかりません。 cgiになにか付け足したらいいのでしょうか? お解りの方いらしたら宜しくお願いします。

    • 締切済み
    • CGI
  • RedHatLinux8.0でのサーバー、FTPサーバー管理について

    初心者です。お尋ねします。 ネットワーク内でCGI(PERLでかかれた)プログラムを稼動させたいと考えています。インターネットでの公開はしない、あくまでもLAN内での運用です。 現在RedHatLinux8.0のパブリッシャーエディションを本のCDからインストールフルインストール(Xウィンドウ)し、ネットワークの接続まで出来ています。 var/www/htmlにテストインデックスHTMLを置き、LAN内のPCからブラウザでIPを打ち込むと日本語が文字化けしていますが、アクセスの確認は出来ました。 --ここからが本題-- 1.OSを立ち上げたときにテストHTMLは確認できますが、FTPやCGIを稼動するもの(アパッチ?)は起動しているのか確認したい? 2.もし、1で両者が既に起動しているのであれば、実際にFTPしたい。こちらは、本等をみながらアクセス制限等確認したのですが、 /etc/vsftpd.conf /etc/vsftpd.ftpusers は、存在しておりそれぞれ本を見た感じでは問題ないと思います。ただ本にあった /etc/proftpd.conf が存在せず、勝手にテキストで作成してディレクトリに設置してみました(涙)。 レンタルサーバーの例をとると、ID+PWDを設定したりアクセス制限をしたり出来ると思うのですが、この辺の操作を知りたいです。 結局は、FTPソフトでFTP転送してCGIモジュールの起動を現実化したいのです。

  • 社内のリナックスサーバーのファイルがIEブラウザみれません

    初心者で申し訳ありません。 先日リナックス、ネットワーク系会社に勤務することになって リナックスとperlの勉強しています。 会社のサーバーの指定アドレスのhtmlファイルはIEブラウザでみれるのですが、会社から提供された/home/usernameのフォルダに、htmlファイルとperlのcgiファイルをwindowsXPからftpソフトによってアップロードして、telnetソフトからperlのcgiファイルを実行できるのですが、IEブラウザからhttp://xxx.xxx.xxx.xxx/~username/filename.cgiを指定するとファイルがありませんとでますが、 何がいけないのでしょうか?よろしくお願いします。

  • MP Form Mail CGI で 500サーバーエラー

    初めまして、gibasense といいます。 サーバーエラーが表示されて困っています。 助けてもらえないでしょうか(>_<) 【使用CGI】  futomi's CGI Cafe  MP Form Mail CGI Professional 版 (メールフォームCGI)  http://www.futomi.com/library/mpmailp.html 【エラー内容】  CGIを実行すると505 Error - Internal Server Error が表示される。 【仕様サーバー】  ロリポップ  【PC環境】  ・OS WindowsXP  ・FTP FFFTP V1.92 【操作設定内容】  ・サーバー上のCGIディレクトリの削除  ・再度、CGIをダウンロード  ・サーバーにアップロード(ASCIIモード)  ・パーミッションの設定   フォルダ[705] HTML,画像ファイル[604] CGI[700] 又は、[704] 【CGIサイト管理者より】  CGIフォルダをサーバーにアップロード後、パーミッションをmpmail.cgi[704]admin.cgi[704]  に設定するだけでCGIは動作する。とコメント頂きました。  (ロリポップのサーバーでテストをして頂きました。) 【その他テスト】  上記のフォームメール以外のCGIは問題なく動作します。  (アクセスカウンター、アクセス解析等) 【追記】  ・Perl のパスは標準で #!/usr/local/bin/perl でした。  ・ロリポップのサーバー番号によって仕様がちがうのでしょうか? どうぞ宜しくお願いします。m(_ _)m

    • ベストアンサー
    • CGI
  • Internal Server Error になってしまいます。

    とある書籍を元にperlを学んでいます。まだ初心者で少々わかりずらい質問になってしまっているかもしれませんが、よろしくお願いします。 下記のコードがある事で Internal Server Error になってしまいます。 open(FILE,">>$logfile") or die("エラー:ログファイルが開けませんでした。"); $logfileの変数値には本日の日付 + .dat が入ります。 自分なりにいろいろ原因を探してみて、$logfileの変数値と同名のファイルをあらかじめ用意してやればエラーにはならない事がわかりました。 それから >> と書けば「対象ファイルが存在しない場合は新規作成される」と書籍には説明があるのですが、新規ファイルは作成されていませんが、>>はそのような動作にはならないものなのでしょうか? それから、or die 以降を削除してしまえば エラーは起きませんでした。 上記コードがあるとなぜ Internal Server Error になってしまうのでしょうか? アドバイスやご教授をよろしくお願いします。

    • ベストアンサー
    • CGI

専門家に質問してみよう