前提・実現したいこと
開発環境(MAMP)で表示されているお問い合わせフォームをEC2側でも表示したい。
発生している問題・エラーメッセージ
MAMPで開発していたWebサイトをEC2インスタンス側にアップロードしたらお問い合わせフォームが表示されませんでした。
google chrome 検証consoleにはエラーメッセージが表示されません。
該当のソースコード
contact.php
PHP
1<?php require_once("./template/header.php"); ?> 2 3<div class="container-fluid"> 4 <div class="row no-gutters"> 5 6 7 <?php require("./template/navigation.php"); ?> 8 9 <div class="col-md-10 smp-home-main"> 10 <div class="main"> 11 <div class="row no-gutters"> 12 <div class="col-12 contact-area-wrapper"> 13 <div class="contact-area"> 14 <h1>GET IN TOUCH</h1> 15 <?php 16 //Enquiry Definition: 17 $MODE_LIVE = 0; 18 $MODE_DEBUG = 1; 19 20 $STATUS_INPUT = 0; 21 $STATUS_CONFIRM = 1; 22 $STATUS_THANKS = 2; 23 24 //Settings: 25 $mode = MODE_LIVE; 26 $status = STATUS_INPUT; 27 28 ?> 29 <?php require_once("./enquiry/util.php"); ?> 30 <?php require_once("./enquiry/form.php"); ?> 31 </div> 32 </div> 33 </div> 34 </div> 35 </div> 36 </div> 37</div> 38 39
enquiry/util.php
PHP
1<?php 2/* 3-------------------------------------------------------------------------------- 4 5Contact Form Utility 6 7-------------------------------------------------------------------------------- 8*/ 9// ----------------------------------------------------------------------------- 10// 定義(項目と入力例) 11// ----------------------------------------------------------------------------- 12$items = array(); 13// 項目名 14$items['Name']['name'] = "Name"; 15$items['Email']['name'] = "Email"; 16$items['Message']['name'] = "Message"; 17 18// ----------------------------------------------------------------------------- 19// 定義(エラーメッセージ) 20// ----------------------------------------------------------------------------- 21$errmsg = array(); 22// エラーメッセージ 23$errmsg['Name']['required'] = $items['Name']['name'] . "のご入力をお願いします"; 24$errmsg['Name']['maxlength'] = $items['Name']['name'] . "は50文字以下でのご入力をお願いします"; 25$errmsg['Email']['required'] = $items['Email']['name'] . "のご入力をお願いします"; 26$errmsg['Email']['format'] = $items['Email']['name'] . "はアルファベットと@でのご入力をお願いします"; 27$errmsg['Email']['maxlength'] = $items['Email']['name'] . "は50文字以下でのご入力をお願いします"; 28$errmsg['Contents']['required'] = $items['Message']['name'] . "のご入力をお願いします"; 29$errmsg['Contents']['maxlength'] = $items['Message']['name'] . "は1,000文字以下でのご入力をお願いします"; 30 31// ----------------------------------------------------------------------------- 32// 定義(メール関連) 33// ----------------------------------------------------------------------------- 34$maildate = date("Y.m.d H:i"); 35$mailAutoReply = array(); 36// 自動返信メールテンプレート(お問い合わせ者本人用)(日本語/英語) 37$mailAutoReply['header'] = "From: " .mb_encode_mimeheader("自分の名前") ."<自分のメールアドレス>"; 38$mailAutoReply['subject'] = "お問い合わせ内容"; 39$mailAutoReply['to'] = ""; // Replace Input Value 40$mailAutoReply['body'] = ""; // Replace Input Value 41$mailAutoReply['template'] = " 42お問い合わせ内容は以下の内容で送信致しました。 43 44※このメールは自動返信メールにてお送りしております。 45 本メールには返信しないようお願いいたします。 46 47-------------------------------------------------------------------------------- 48"; 49$mailAutoReply['templatefoot'] = " 50-------------------------------------------------------------------------------- 51 52自分の名前 53 54-------------------------------------------------------------------------------- 55"; 56/* 57 58【名前】:<名前> 59 60【Email】:<Email> 61 62【お問い合わせ内容】: 63 64*/ 65 66$mailAutoNoticeTemplate = array(); 67// 自動返信メールテンプレート(当サイト管理者用)(日本語/英語) 68$mailAutoNotice['header'] = "From: " .mb_encode_mimeheader("自分の名前") ."<自分のメールアドレス>"; 69$mailAutoNotice['subject'] = "お問い合わせのお知らせ - " . $maildate; 70$mailAutoNotice['to'][MODE_DEBUG] = "自分のメールアドレス"; 71$mailAutoNotice['to'][MODE_LIVE] = "自分のメールアドレス"; 72$mailAutoNotice['body'] = ""; // Replace Input Value 73$mailAutoNotice['template'] = " 74Webサイトからお問い合わせが入りました。 75ご対応をお願いいたします。 76 77-------------------------------------------------------------------------------- 78"; 79/* 80 81【名前】:<名前> 82 83【Email】:<Email> 84 85【お問い合わせ内容】: 86 87*/ 88 89// ----------------------------------------------------------------------------- 90// お問い合わせ処理(バリデーション含む) 91// ----------------------------------------------------------------------------- 92// Contact Status & Validation Check 93 94$error = array(); 95$posts = $_POST; 96 97if( isset($posts['status']) ) { // Confirm or Thanks 98 99 $status = $posts['status']; 100 101 $uri = 'https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 102 103 $referer = $_SERVER['HTTP_REFERER']; 104 if($uri !== $referer) { 105 return; 106 } 107 108 // Status : Confirm ---------- 109 if( $status == STATUS_CONFIRM ) { 110 111 // 迷惑メール対策としてダミーの入力フォームを設置 112 if( !empty($posts['d_text']) ) { 113 return; 114 } 115 116 // Name 117 if( empty($posts['Name']) ){ 118 $error['Name'] = $errmsg['Name']['required']; 119 }else{ 120 if( mb_strlen($posts['Name']) > 50 ) { 121 $error['Name'] = $errmsg['Name']['maxlength']; 122 } 123 } 124 // Email 125 if( empty( $posts['Email'] ) ) { 126 $error['Email'] = $errmsg['Email']['required']; 127 } else { 128 if( preg_match( "|^[0-9a-z_./?-]+@([0-9a-z-]+.)+[0-9a-z-]+$|",$posts['Email'] ) ) { 129 if( mb_strlen( $posts['Email'] ) > 50) { 130 $error['Email'] = $errmsg['Email']['maxlength']; 131 } 132 } else { 133 $error['Email'] = $errmsg['Email']['format']; 134 } 135 } 136 // Contents 137 if( empty( $posts['Message'] ) ) { 138 $error['Message'] = $errmsg['Message']['required']; 139 } else { 140 if( mb_strlen( $posts['Message'] ) > 1000 ) { 141 $error['Message'] = $errmsg['Message']['maxlength']; 142 } 143 } 144 145 // !!! Success -> Status is THANKS 146 $status = STATUS_THANKS; 147 if( count($error) ) { 148 // !!! Error -> Status is INPUT 149 $status = STATUS_INPUT; 150 } 151 } 152 153 // Status : Thanks ---------- 154 if( $status == STATUS_THANKS ) { 155 156 // Mail Data Make 157 $body_tmp = NULL; 158 $line_length = 0; 159 $body = "【". $items['Name']['name'] ."】:" . $posts['Name'] ."\n"."\n"; 160 $body .= "【". $items['Email']['name'] ."】:" . $posts['Email'] ."\n"."\n"; 161 ///////////////////////////////////////////////////////////////////////// 162 // 改行(一行)ごとにデータを取得する 163 $line = mb_split("\n", $posts['Message']); 164 $body_tmp = NULL; 165 $line_length = 0; 166 // 1行あたりの制限文字数(日本語を取り扱う前提) 39*2 = 78 Byte 167 $part_length = 39; 168 for ($i = 0; $i < count($line); $i++) { 169 $line_length = strlen($line[$i]); 170 $one_line = NULL; 171 // ASCII文字のみであれば、最大制限文字数の2倍の文字数までを許可する 172 if ($line_length > ($part_length * 2)) { 173 $mb_length = mb_strlen($line[$i]); 174 // メール全体の行数を求める 175 if (($mb_length % $part_length) == 0) { 176 $loop_cnt = $mb_length / $part_length; 177 } else { 178 $loop_cnt = ceil(mb_strlen($line[$i]) / $part_length); 179 } 180 $start_num = 0; 181 // 1行ごとに制限文字数内で分解して改行コードを挿入する 182 for ($j = 1; $j <= $loop_cnt; $j++) { 183 // 制限文字数単位で改行コード挿入 184 $one_line .= mb_substr($line[$i], $start_num, $part_length) . "\r\n"; 185 $start_num = $part_length * $j; 186 } 187 } else { 188 $one_line = $line[$i] . "\r\n"; 189 } 190 $body_tmp .= $one_line; 191 } 192 ///////////////////////////////////////////////////////////////////////// 193 $body .= "【". $items['Message']['name'] ."】:" ."\n"."\n" . $body_tmp ."\n"."\n"; 194 195 // Auto Reply 196 $mailAutoReply['to'] = $posts['Email']; 197 $mailAutoReply['body'] = $mailAutoReply['template'] . $body . $mailAutoReply['templatefoot']; 198 mb_send_mail( $mailAutoReply['to'], $mailAutoReply['subject'], $mailAutoReply['body'], $mailAutoReply['header'] ); 199 200 // Auto Notice 201 $mailAutoNotice['body'] = $mailAutoNotice['template'] . $body; 202 mb_send_mail( $mailAutoNotice['to'][$mode], $mailAutoNotice['subject'], $mailAutoNotice['body'], $mailAutoNotice['header'] ); 203 204 } 205} 206 207?>
足りない情報あればすぐに追加します。
よろしくお願いいたします。
試したこと
<?php require_once("./enquiry/util.php"); ?>をcontact.phpから削除するとform.phpは表示されるのでutil.phpに問題があるはずです...補足情報(FW/ツールのバージョンなど)
MAMP php 7.4.3
EC2 php 5.3
追記
error_log
1[Sun Apr 05 10:31:26.376913 2020] [suexec:notice] [pid 4116] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec) 2[Sun Apr 05 10:31:26.399282 2020] [lbmethod_heartbeat:notice] [pid 4116] AH02282: No slotmem from mod_heartmonitor 3[Sun Apr 05 10:31:26.399327 2020] [http2:warn] [pid 4116] AH10034: The mpm module (prefork.c) is not supported by mod_http2. The mpm determines how things are processed in your server. HTTP/2 has more demands in this regard and the currently selected mpm will just not do. This is an advisory warning. Your server will continue to work, but the HTTP/2 protocol will be inactive. 4[Sun Apr 05 10:31:26.399332 2020] [http2:warn] [pid 4116] AH02951: mod_ssl does not seem to be enabled 5[Sun Apr 05 10:31:26.412468 2020] [mpm_prefork:notice] [pid 4116] AH00163: Apache/2.4.41 () PHP/5.4.16 configured -- resuming normal operations 6[Sun Apr 05 10:31:26.412490 2020] [core:notice] [pid 4116] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'
回答2件
あなたの回答
tips
プレビュー