サーバー引越しでCGIのフォームエラーが出て、復旧した際の備忘録
はじめに
サーバーを引越しするにあたり、元のサーバーでは動いていたメールフォームが、引越し先(さくらインターネット)では動かないというトラブルがありました。
今回はその備忘録を残しておきます。
エラー内容
フォームはCGIで作られていて、新サーバー上でメールフォームを送信すると下記のようなエラーが出ました。
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator at support@sakura.ad.jp to inform them of the time this error occurred, and the actions you performed just before this error.
More information about this error may be available in the server error log.
要するに、リクエストに応えられず、詳細はエラーログを見てね、との事。
さくらインターネットのコントロールパネル上でエラーログを見ると、下記のようなログがありました。
suexec policy violation: see suexec log for more details: /hogehoge/form/send.cgi, referer: https://hoge.co.jp/form.html
End of script output before headers: send.cgi, referer: https://hoge.co.jp/form.html
対応
日ごろCGIには触れる機会は殆どないですが、上記のログからはsend.cgiというものが怪しそうです。
早速「 suexec policy violation: see suexec log for more details」で検索してみると、どうやらsend.cgiのパーミッション設定が怪しい。
それで調べてみたところ、send.cgiのパーミッションは「604」。
CGIは通常、「705」か「755」である事が前提らしいので、パーミッションを「755」に設定。
これで正常に動くかと思いきや、動かない。。。
他に原因があるのかと探してみたが、そもそも何をやってもCGIが動かない。
これは何か変だということで、アップロードソフトを「Yummy FTP Pro」から「DreamWeaver」に変えて再アップ。
そしてCGIのパーミッションを「755」に設定。
動作確認をしてみると。。。動きました。
原因
原因は、新サーバーにアップロードした際に使ったFTPソフトが「Yummy FTP Pro」なのですが、恐らくASCIIモードとバイナリモードがうまく設定されていなかったのかな、というところです。(設定を見つけきれず。。。?)
本来、CGIはASCIIモードで転送する必要があるとの事です。さくらのサポートにも記載してありました。こちら
結論、CGIをアップする際に気を付ける事は
・パーミッションの設定は正しいかどうか
・ファイル転送は適切に行われているか
<追記>
上記の対策を行い、エラーがなくなってホッとしていたのですが、クライアントから「メールが届かない」との連絡がありました。
色々調べた結果、sendmailのパスが引越し前のサーバーと引越し先のサーバーでは違う事が分かり、修正。
修正はsend.cgiファイルではなく、元のhtmlファイルでした。(一応send.cgiもsendmailで検索して修正該当なしを確認)
1 2 3 4 5 |
修正前 <input type="hidden" name="sendmail" value="/usr/lib/sendmail" /> 修正後 <input type="hidden" name="sendmail" value="/usr/sbin/sendmail" /> |
参考:さくらインターネットQ&A「CGI・PHPをうまく設置できません」
https://help.sakura.ad.jp/206228801/
もし同じような不具合を起こされている方は、上記の点を今一度ご確認いただくと良いかと思います。
参考:
http://www.cs.reitaku-u.ac.jp/infosci/netwk/ffftp/index.html
公開日:2019年10月13日
最終更新日:2019年10月17日