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

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

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

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

Q&A

解決済

3回答

4117閲覧

PHP: Try ~ Catchのなかで生じる異常なのに、エラーとしてキャッチできない

saya24

総合スコア225

PHP

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

0グッド

0クリップ

投稿2020/05/16 02:16

編集2020/05/16 02:35

データベースサーバに接続してSQL文発行の上でデータ取得してくるコードですが、PHPに割当てられたメモリ以上の処理が発生した際
エラーとしてCatchされずに異常終了?!してしまっているようです。
コードの下に ERROR_logに記載された該当エラー部分も掲載しています。Fatal errorはExceptionの部類にならないのでしょうか?

PHP

1 try { 2 //DBへの接続 【php_classes/classes.phpに接続先は書いてあります】 3 $db = new ms0connect(); 4 $conn = $db->dbconnect(); 5 $stmt = $conn->query($sql); 6 $results = $stmt->fetchAll(PDO::FETCH_ASSOC); 7 $conn = null; 8 } catch (Exception $e) { 9 error_log("### SQL Serverデータ取得失敗 ⇒".$sql."###".$e->getMessage(),0); 10 die("Error:" . $e->getMessage()); 11 }

Error

1PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) in C:\Apache24\htdocs\hoge\test01.php on line 43 2PHP Stack trace: 3PHP 1. {main}() C:\Apache24\htdocs\hoge\test01.php:0 4PHP 2. PDOStatement->fetchAll() C:\Apache24\htdocs\hoge\test01.php:43

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

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

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

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

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

guest

回答3

0

Fatal error は、set_error_handler でハンドル可能ですが、Try ~ Catch のようにお手軽ではありません。

余談)
500系は「php がまともに動かない」って状態を、web サーバが返しています。

投稿2020/05/16 03:15

編集2020/05/16 03:16
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

saya24

2020/05/16 04:43

ありがとうございます。 これ、知りたかったんです!全部が全部ではないのですよね、500系のステータスコードを返しているのはPHPではなくApatch等のWebサーバ側である、というのは??
guest

0

ベストアンサー

Fatal errorはExceptionの部類にならないのでしょうか?

はい、そのとおりです。

投稿2020/05/16 02:18

maisumakun

総合スコア145201

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

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

saya24

2020/05/16 02:27

そうなのですか。 でも、エラーログだけでなく、httpアクセスしてきた相手にステータスコードを返してくれているようですねぇ....Catchしてdieしない限り アクセスしてきた相手にステータスコードを返せないと思ったら ちゃんと500(サーバ側のエラー)を返してきている 結果吉なのですが ご見解ありがとうございました。
guest

0

Fatal というのは致命的という意味で、Fatal Errorというのは自プログラムでは回復不能のエラーです。

プログラムが異常終了するで、そのプログラムを呼び出したプログラムが検知して対処します(もしくは道連れでまるごとこけるか)。

投稿2020/05/16 02:47

otn

総合スコア84710

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

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

saya24

2020/05/16 03:08

ありがとうございます。よく分かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問