質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

MAMP

Mac 上で WordPress などの動的ページのサイトが作れるように環境を構築するフリーソフト

Q&A

解決済

2回答

802閲覧

お問い合わせフォームが表示されない

WebDeveloperKei

総合スコア21

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

MAMP

Mac 上で WordPress などの動的ページのサイトが作れるように環境を構築するフリーソフト

0グッド

0クリップ

投稿2020/04/05 02:13

編集2020/04/05 10:43

前提・実現したいこと

開発環境(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'

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/04/05 03:54

サーバーのエラーログを確認してください。Chromeでキャッチできるのはあくまでフロントまで流れてきた情報のみです。PHP側のエラーが起因であればブラウザの検証ツールでは基本的に拾えません。
WebDeveloperKei

2020/04/05 04:29

awsの知識がなく、Elastic IPの設定をしていなかったためアクセスできなくなりました。 設定してエラーログを確認した上でコメントさせていただきます。 ありがとうございます!
guest

回答2

0

自己解決

お問い合わせフォームを作り直して無事表示に成功しました。

追記したエラーを解決しようと
/etc/httpd/conf.modules.d/00-mpm.conf
を開いて編集したところ他の箇所でもエラーが発生したので作り直しました。

根本的な解決できず、申し訳ございません。

投稿2020/04/06 00:02

WebDeveloperKei

総合スコア21

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

お問い合わせフォームを作り直して無事表示に成功しました。

追記したエラーを解決しようと
/etc/httpd/conf.modules.d/00-mpm.conf
を開いて編集したところ他の箇所でもエラーが発生したので作り直しました。

ありがとうございました。

投稿2020/04/05 23:59

WebDeveloperKei

総合スコア21

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問