人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

メール送信のCGIの設置についての質問です。
KDDIの法人用ホスティングサービスのサーバー内でホームページを立ち上げ、その中の「お問い合わせ」ページで問い合わせ内容をメール送信するようにしたくて、POST-MAILというフリーのCGIプログラムを入れたのですが、いろいろ試してみてもどうもうまくいきません。
詳細を書くので、どこが間違っているのか教えてください!

●toiawase.html 内の「送信ボタン」のhtml

<form name="form" id="form" action="./cgi-bin/postmail.cgi" method="post" enctype="multipart/form-data" >
<input type="submit" value=" 送 信 " >

●postmail.cgi と check.cgi の1行目
#!/usr/bin/perl

●init.cgi で書き換えた部分
・送信先のメールアドレス

・# 送信者へのメール返信
# 0=no 1=yes
$cf{auto_res} = 0;

・# 本体プログラム【URLパス】
$cf{mail_cgi} = './cgi-bin/postmail.cgi';

・# ログファイル【サーバパス】
$cf{logfile} = './cgi-bin/log.cgi';

・# セッションファイル【サーバパス】
$cf{sesfile} = './cgi-bin/ses.cgi';

・# テンプレートディレクトリ【サーバパス】
$cf{tmpldir} = '../postmail/tmpl';

・# 送信後の戻り先【URLパス】
$cf{back} = '../kyodo-toiawase.html';

1406786174
●拡大する

●質問者: greenblat
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● sasada
●0ポイント

jquery-1.9.1.min.jpやら、bmp?ファイルやらがないというエラーですね。
これらのファイルを用意してやれば、この件は解決するのでは。


sasadaさんのコメント
cgi-binのファイルのパーミッションを「711」にしても駄目ですか?

greenblatさんのコメント
ダメでした。

sasadaさんのコメント
あー。cgi-binのファイルのパーミッションを「755」に、ただし、'./cgi-bin/log.cgi'のパーミッションは「777」にしてみてください。しかし、log.cgiの内容は壊れると思いますので、バックアップ取っておいてください。

greenblatさんのコメント
エラーログは減りましたが、まだ以下の様なエラーが出ました。 [Thu Jul 31 20:03:37 2014] [error] [client 210.249.52.50] Premature end of script headers: /usr/home/xa137035/html/cgi-bin/postmail.cgi fopen: Permission denied failed to open log file

sasadaさんのコメント
ログファイルが'./cgi-bin/log.cgi'になってますが、cgi-bin自体が書き込み禁止になっている可能性があります。他の書き込みOKなディレクトリに設定するのが良いかと思います。あと、あらかじめファイルを作っておくのが吉かと。

sasadaさんのコメント
普通/cgi-bin/には更新ファイルは置きません。アタックに対して脆弱になるといけないから。で、/cgi-bin/フォルダ自体が書き込み禁止になってる可能性が有ります。 よって、ログファイルは、data/log.cgi等に置くのが適切かと存じます。

2 ● gizmo5
●500ポイント

フリーの POST-MAIL という CGI プログラムというのは、こちらの CGI でしょうか。
http://www.kent-web.com/mail/postmail.html

ページの中ほどにパーミッションについて記載されていますが、一般サーバの方のパーミッションを設定して試してみてください。


greenblatさんのコメント
試してみたら、エラーの表示が減りました! しかし、このエラーは無くなりません。 [Thu Jul 31 17:26:27 2014] [error] [client 210.249.52.50] Premature end of script headers: /usr/home/xa137035/html/cgi-bin/postmail.cgi fopen: Permission denied failed to open log file postmail.cgiのパーミッションが755と705にした場合は上記のエラーログのみで それ以外の705や700にするとエラーログは以下のようになります。 [Thu Jul 31 17:23:43 2014] [error] [client 210.249.52.50] Premature end of script headers: /usr/home/xa137035/html/cgi-bin/postmail.cgi fopen: Permission denied failed to open log file [Thu Jul 31 17:23:43 2014] [error] [client 210.249.52.50] (13)Permission denied: mod_mime_magic: can't read `/usr/home/xa137035/html/cgi-bin/postmail.cgi'

gizmo5さんのコメント
私が回答で書いた URL の POST-MAIL ということでよろしいのですね。 postmail.cgi だけではなく、他のファイルについてもページの指定に従ってパーミッションを設定してください。 今出ているエラーは、data/log.cgi のパーミッションを 666 にすることで出なくなると思います。

gizmo5さんのコメント
済みません。logfile の配置場所を変更していたのですね。 data/log.cgi は cgi-bin/log.cgi に読み替えてください。

3 ● よたか
●500ポイント

私は「KDDI シェアードプランACE」を使っているモノです。
このサーバー.htaccessの設定とかphp.iniの設定とかかなり細かくて厄介ですよね。

内容を見る限り私もパーミションの設定だとは思いますが、既に詳しく書かれている方が見えますので割愛します。

使われているメールソフトについては存じませんが、当方で行った対処方法を記載します。

1)フォームを設置しているディリクトリにphp.iniを配置する。
通常上位のphp.iniを参照すると思うのですが、ディリクトリによっては参照していないようでしたので、php.iniを配置したところ、入力については上手く動作しました。

2).htaccessに下記2行を追加する。
RewriteEngine On の直下に下記2行を追加したところ上手く送信できました。

RewriteCond %{HTTP_HOST} ^(hogehoge\.com)(:80)? [NC]
RewriteRule ^(.*) http://www.hogehoge.com/$1 [R=301,L]

うちのメールフォームはエラーログさえ出さずに、トップページ戻ってしまうという困った感じでしたので強制的にwww方へ飛ばしてエラーを回避しました。

ただし、これでは全てのURLにwwwがついてしまうので、落ち着いたらプログラムの見直しも含めて修正を行う予定です。


ちなみにウチで使っているプログラムはウチで配布しているメールフォームです。
説明書もなにもありませんが、よろしければお使いください。
http://www.hanamachi.com/?page_id=139

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ