フォームの送信でエラーになる
-
0 名前: momomo : 2006/06/12(月) 21:33 [URL]
- 問い合わせフォームを送信しても、『500 Internal Server Error』になります。
問い合わせフォームはフリーのCGIを必要箇所を編集しています。
foemのactionはプログラムのURLを設定しています。
PerlやSendmailパスの設定もしましたし、パーミッションの設定も指示通り755にしています。
どこが間違っているのか分かりません。
HP作成は初めで、全くの初心者です。
サイト内の検索も色々してみましたが、方法が見出せずにいます。
よろしくお願いします。
-
1 名前: m035 : 2006/06/12(月) 21:33 [URL]
- 詳しい者ではありませんが、
http://w3lab.net/mm/ts/cgi.html#internal
http://x68000.q-e-d.net/~68user/webcgi/intro-perl.html
から察するにパーミッションや実行ディレクトリに問題が無ければ、プログラムにミスがあるようです。
-
2 名前: とおりすがり : 2006/06/12(月) 21:33
- フリーのCGIを利用しているならば、まずそちらの制作元のサポートBBSなりで質問してみるべきでは?なければ仕方ないですが
必要箇所編集と言ってもどこをどうしたのか分かりませんし。。。
そういえば、編集時に消してはいけない箇所を消したとか余計な物を書込んでいたとかはよくあるミスですが。
-
3 名前: Pid : 2006/06/12(月) 21:33
- >>0
CGI に関しては,外部の人間からは確認できない項目が多いですから,
・どのサーバに,どのスクリプトを設置しようとしたのか
・自分がこれまでどういう手順で,何を行ってきたのか
・どうすると,どうなるのか
をできるだけ詳細に書いて下さい。
参考までに,サーバ側で suEXEC や CGIWrap が有効になっている場合,実行ファイルには 700 を与えないと動作しません(つまり,所有者以外に実行権限を与えてはいけない)。
-
4 名前: Pid : 2006/06/12(月) 21:33
- あ,もう一つついでに,サーバによっては,実行ファイルの改行コードを LF にしないとうまくパースできない場合もあります。
-
5 名前: momomo : 2006/06/12(月) 21:33 [URL]
- m035さん、とおりすがりさん、Pidさん、ありがとうございます。
何故思い付かなかったかと恥ずかしながら、CGIプログラムの作成元へ質問しました。。
お返事待っているところです。
書き換えてよい部分と、分からない人は触らない方が良い部分が明記されていたので、
消してはいけない箇所を消したということはないかと思いますが、
余計な物を書込んでいないかよく見ます。
パーミッションの設定も、サーバーの推奨の
ディレクトリ→701、実行ファイル→700等やってみましたが
ダメでした。
サーバーは『Xserver』で、使用したのは『Perlmailer 3.01』です。
1、CGIプログラムをDLして、CGIプログラムの初期設定を自分用に変更。
それぞれのパスを変更、送信されるメルアドを設定
フォームは自作したものに変更
送信完了ページも自作したものに変更(それに伴うURLも)
public_html内にcgi-binディレクトリを作成して、例で示されているように
ディレクトリ、ファイルを構成して、パスも変更
あと、共有SSLのアドレスを使用しています。
2、あちこちの質問掲示板を参照していじっていますが、何をしてもエラーになります。
あと、FTPファイルは使用していません。
フリーのテンプレートを使用したのですが、『.htaccess』は
アップロードした時に付いてきたので、さわれません(さわっていません)。
これで情報は足りるでしょうか。。。
私ごときが入れる分野ではないのでしょうが、アドバイスよろしくお願いします。
-
6 名前: Pid : 2006/06/12(月) 21:33
- 返事を待つ間の確認にでも…(^^;)。
『Xserver』http://www.xserver.ne.jp/
『Perlmailer 3.01』http://www.din.or.jp/~hideyuki/home/cgi/mailer.html
以上で間違いありませんね?
> サーバーの推奨のディレクトリ→701、実行ファイル→700等
ということは >>3 で触れたように suEXEC が有効になっていますので,755 では駄目です。必ず 700/701 にして下さい。
> 『.htaccess』はアップロードした時に付いてきたので、さわれません(さわっていません)
どこに置きましたか。また,何と記述されていますか。
> 共有SSLのアドレス
とは何のことですか。
あと,サーバに telnet や ssh 等(TeraTerm でも良い)を使ってリモートログインできますか(おできになるのであれば,解決が早いのですが)。
-
7 名前: 神崎 : 2006/06/12(月) 21:33
- > 問い合わせフォームはフリーのCGIを必要箇所を編集しています。
このときに、動かなくなるような変更をしてしまったのではないでしょうか?
また、ファイルのアップロードはどんな方法
(バイナリモード、アスキーモード、xserverのホームページからログインしてファイルマネージャー使用)
をされましたか?
私の所もxserverなので、
> 『Perlmailer 3.01』http://www.din.or.jp/~hideyuki/home/cgi/mailer.html
をダウンロードして動かしてみました。
変更箇所
perlmail.cgi
1行目、perlのパス
27行目、jcode.plのパス
33行目、sendmailのパス
44行目、メールアドレス
perlmail.html
62行目、URL(メール送信後の戻りURL)
アップロードはアスキーモード、(文字コードの変換なし)
パーミッションは755と700の両方で動かしたところ、どちらもCGIは動きました。
(ディレクトリのパーミッションにも関係すると思いますが)
-
8 名前: momomo : 2006/06/12(月) 21:33 [URL]
- Pidさん、ありがとうございます。
サーバー、プログラム元は間違いありません。
パーミッションは現在
(ディレクトリ)cgi-bin、library、mail→701
(ファイル)perlmail.cgi、jcode.pl→700
他のファイルは644のままにしています。
『.htaccess』はindex.html等と同じpublic_htmlディレクトリ内にあります。
HP用のフォルダ内にはありませんので、何と記述されているか分かりません。
サイズが 0.0KBになっているので、カラでしょうか?
カラではダメですよね。
自分で作り直して、アップロードするのでしょうか?
フォームの内容をSSL送信できるように、サーバーの共有SSLというものを使用しています。
https://から始まる、サーバーで設定している『共有SSLアドレス』を
フォームのページへのURLと、フォームのactionに、
ファイル名の前につけて設定しています。
共有SSLアドレスを使用しないで設定してもダメでした。
サーバーでは『telenetやSSHはご利用いただけません』となっています。
神崎さん、ありがとうございます。
ファイルのアップロードは、いつも
xserverのホームページからログインしてファイルマネージャーを使用しています。
モードの変更は探してもどこでどうするのか分からなかったので、変えていません。
自作したフォーム等を使用しないで、
変更箇所を限定して設定してみましたがダメでした。
≪perl.cgi≫
1行目、perlのパス→/usr/bin/perl
27行目、jcode.plのパス→require 'http://fine-service.com/cgi-bin/library/jcode.pl';とか
require '/cgi-bin/library/jcode.pl';とか
require 'cgi-bin/library/jcode.pl';とか
require './jcode.pl';にしてみました。
33行目、sendmailのパス→/usr/sbin/sendmail
44行目、メールアドレス→フォーム用のメールアドレス
≪perlmail.html≫
62行目、URL(メール送信後の戻りURL)→http://fine-service.com/
送信完了ページのファイル名 とか
http://fine-service.com/cgi-bin/mail/
送信完了ページのファイル名 とか
ファイルの位置を変えてやってみました。
あと、33行目、formのaction→perlmail.cgiとか
cgi-bin/mail/perlmail.cgiとか
(共有SSLアドレス)/cgi-bin/mail/perlmail.cgiとか
http://fine-service.com/cgi-bin/mail/perlmail.cgi
で
設定してみました。
『.htaccess』のせいでしょうか。。。
皆様にお手間を取らせてすみません。。。
私の設定が悪いと思いますが、皆様よろしくお願いします。
-
9 名前: Newのり太 : 2006/06/12(月) 21:33
- > 『.htaccess』はindex.html等と同じpublic_htmlディレクトリ内にあります。
> HP用のフォルダ内にはありませんので、何と記述されているか分かりません。
FTPソフトで.htaccessファイルをPCにダウンロードし、メモ帳などで開けば何と書いてあるかわかります。
> サイズが 0.0KBになっているので、カラでしょうか?
> カラではダメですよね。
ダメとは限らないと思いますが、サーバーによっては、
.htaccess でCGIを有効にする必要があるかもしれません。
http://mikeneko.creator.club.ne.jp/~lab/web/htaccess/directory.html#Options
ただし、
http://www.xserver.ne.jp/
をざっと見てもそれらしい説明はないようですが。。
# もしそうであれば、サポートページに説明があってもいいと思いますし、
# 同じサーバーをご利用の神崎さんからも指摘があると思います。
/*追記*/
あ、こんな記事がありますね。。
http://www.xserver.ne.jp/support/support3d.html
|cgi-bin ディレクトリ内では、セキュリティの関係上 cgi 以外のファイルは動作しません。
|cgi-bin ディレクトリ以外で CGI の動作が可能ですので、正常にCGIが動作しない場合は、
|cgi-bin ディレクトリ以外での動作をお試し下さい。
-
10 名前: Chip : 2006/06/12(月) 21:33
- perlmail.cgiの2行目に次の1行を挿入してみる。
use CGI::Carp qw(fatalsToBrowser);
これで実行するとブラウザに詳しいエラーメッセージがでるかも。
-
11 名前: momomo : 2006/06/12(月) 21:33 [URL]
- で・き・ま・し・たぁっ!!!!!!!
メールも届きました!!
Newのり太さん、ありがとうございます。
ご指摘頂いたように、ディレクトリの構成を変えたのが良かったのかと思います。
FTPソフトで.htaccessファイルをPCにダウンロードし、
メモ帳で開いたところ、何も記載されていませんでした。
これはこのままでよいのでしょうか。。。
FTPソフトでcgiファイルをアスキーモードでダウンロードしてみたのがよかったのでしょうか。
Chipさん、ありがとうございます。
やってみましたところ、
Software error:
Can't locate http://www.fine-service.com/jcode.pl
in @INC 途中省略
at perlmail.cgi line 29.
と出たので、
日本語変換ライブラリ(jcode.pl)のパスが間違えていると思い、
require 'http://www.fine-service.com/jcode.pl';を
require '../jcode.pl';に変えたら!出来ました☆最終的に。
皆様、本当に感謝致します。。。
手が震えて。。打ち間違えてしまう。。。
もう1週間以上、この件と格闘していたので、もう、涙が出そうです。。。
自作したフォームを使っても出来ましたが、
なぜか自作した送信完了ページが出ずに、作成者さんの用意したページが出ます。
作成者さんのフォームを使うと、自作した送信完了ページが出ます。。。
ぼちぼち設定を見直します。
皆様!本当にありがとうございましたーーーーーー
-
12 名前: しも : 2006/06/12(月) 21:33 ID:Rrt747Rj
- 始めまして、しもと申します。
今、ホームページの登録フォームにSSLでセキュリティーをかけようと、『https://www.〜』とURLを書くとこのサイトのセキュリティーには問題があります。というエラーが出てきてしまいます。この証明書を発行してくれたところに原因を聞きましたが、登録フォームにSSLに認証されていないドメインが入っている可能性があるといわれましたが、そういったものは、一切入っていません。こういった事がおきる原因や対象方法を教えてもらえますか。
-
13 名前: m035 ◆Wpzr1YKOiq : 2006/06/12(月) 21:33 [URL] ID:NNrIZXQd
- 他人の古いスレッドに乗っかるのはマナーが良くないと思います。
また、あなたはマルチポストしています。
http://bbs.j-ns.com/topics.php?num1=1846