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

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

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

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

VPS

VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

Q&A

解決済

1回答

641閲覧

構文エラーでhttp500エラーが発生する

Roo

総合スコア55

PHP

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

VPS

VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

0グッド

0クリップ

投稿2019/02/13 08:33

編集2019/02/13 08:34

###前提
現在課題として、会員登録機能を作成しています。

●mysqlバージョン 5.6.41
●PHPバージョン 5.4.45
●実施サーバー : さくらのvps
●FTP      : WINSCP

 
###該当のソースコード

php

1 2 3 4// ログインボタンが押された場合 5// if (isset($_POST["login"])) { 6// 1. ユーザIDの入力チェック 7// if (empty($_POST["userid"])) { // emptyは値が空のとき 8// $errorMessage = '※UserIDまたはPasswordが間違っています。'; 9// } else if (empty($_POST["password"])) { 10// $errorMessage = '※UserIDまたはPasswordが間違っています。'; 11// } else if (!preg_match("/^[A-Za-z0-9]+$/u", $_POST["userid"])){ 12// $errorMessage = '※正規表現外'; 13// } else if (!preg_match("/^[A-Za-z0-9]+$/u", $_POST["password"])){ 14// $errorMessage = '※正規表現外'; 15// } else if (!preg_match("/^.{4,10}$/",$_POST["userid"])){ 16// $errorMessage = '※桁数上'; 17// } else if (!preg_match("/^.{4,10}$/",$_POST["password"])){ 18// $errorMessage = '※桁数上'; 19 20 21// }else{ 22// 23// 24// if (!empty($_POST["userid"]) && !empty($_POST["password"])) { 25// // 入力したユーザIDを格納 26// $userid = $_POST["userid"]; 27// 28// 29// 30// 31// // 2. ユーザIDとパスワードが入力されていたら認証する 32// $dsn = sprintf('mysql:host=%s;dbname=%s;charset=utf8',$db['host'], $db['dbname']); 33// 34// // 3. エラー処理 35// try { 36// $pdo = new PDO($dsn,$db['user'],$db['pass'],array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION)); 37// 38// $stmt = $pdo->prepare('SELECT * FROM userdata WHERE name = ?'); 39// $stmt->execute(array($userid)); 40// 41// $password = $_POST["password"]; 42// 43// if ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 44// // if (password_verify($password, $row['password'])) { 45// if ( $password == $row['password']) { 46// session_regenerate_id(true); 47// 48// //正常に叩かれた場合、SQL実施 49// $sql = "UPDATE userdata SET sdate='$date' WHERE id='1'"; 50// $result = $pdo->query($sql); 51// 52// 53// // 入力したIDのユーザー名を取得 54// $id = $row['id']; 55// $sql = "SELECT * FROM userdata WHERE id = $id"; //入力したIDからユーザー名を取得 56// $stmt = $pdo->query($sql); 57// foreach ($stmt as $row) { 58// $row['name']; // ユーザー名 59// } 60// $_SESSION["NAME"] = $row['name']; 61// header("location: my.php"); 62// exit(); // 処理終了 63// } else { 64// // 認証失敗 65// $errorMessage = '※UserIDまたはPasswordが間違っています。'; 66// } 67// } else { 68// // 4. 認証成功なら、セッションIDを新規に発行する 69// // 該当データなし 70// // $errorMessage = 'ユーザーIDあるいはパスワードに誤りがあります。'; 71// $errorMessage = '※該当データなしUserIDまたはPasswordが間違っています。'; 72// } 73// } catch (PDOException $e) { 74// 75// $errorMessage = header("Location: 500.php"); 76// //$errorMessage = $sql; 77// // $e->getMessage() でエラー内容を参照可能(デバッグ時のみ表示) 78// // echo $e->getMessage(); 79// } 80// } 81// 82// } 83// var_dump($errorMessage);おいおい 84 85

###発生している問題
・ファイル内にコメントアウトをしているソースがない(コメントアウトする)場合
→ページが表示されます

・ファイル内にコメントアウトをしているソースがある(コメントアウトしない)場合
→http 500エラーが発生する

###質問点
●質問1:
ローカルで実施した場合構文エラーは
Parse error: syntax error,~~
として表示される様に、
サーバー上では構文エラーを出すとhttp 500エラーになってしまうのでしょうか?

●質問2:
質問1の様にサーバー上で(Parse error: syntax error,=http 500エラー)の場合
構文が間違っているかの確認はサーバー上ではできないのでしょうか?
確認する方法はありますか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

●質問1:
サーバー上では構文エラーを出すとhttp 500エラーになってしまうのでしょうか?

Yes.

●質問2:
構文が間違っているかの確認はサーバー上ではできないのでしょうか?
確認する方法はありますか?

Webにアクセスしてきた第三者に見えると問題になる情報が含まれる場合があるので、デフォルトでは、Webブラウザには、表示されないようになっていて、Web サーバーのログに記録されます。

Webサーバーのログは、デフォルトの場合、apache は、/var/log/httpd/ に nginx は、 /var/log/nginx か /var/log/php-fpm/ のどちらかにログが記録されています。

また、Web 画面にエラーメッセージを表示したい場合は、php.ini 等で、 display_errors = On の設定をしてください。

投稿2019/02/13 08:42

CHERRY

総合スコア25171

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

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

Roo

2019/02/13 08:45

お世話になっております。 お早い解答感謝いたします。 php.iniの設定実施いたします。 取り急ぎご返礼を
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問