こんにちは。明月です。
前述でPHPでデバッグする方法に関して説明したことがあります。
link - [PHP] データ確認関数(var_dump, debug_zval_dump, print_r)
普通、PHPで開発する時にvar_dumpをよく使いますが、var_dumpやエラーが発生する時などのメッセージをもっと正確に分析してくれるライブラリのxDebugがあります。
これからxDebugのライブラリをインストールしましょう。
まず、phpinfoの関数でPHPの環境設定に関して確認しましょう。
上のPHP環境設定のページをソースビューにしてソース全てをセレクトせいてコピーしましょう。(Ctrl + c)
その後、下記のURLに接続してパッケージ検査をしましょう。
ダウンロードパッケージ検査 : https://xdebug.org/wizard.php
その後でパッケージ情報が表示されますが、ダウンロードURLでxdebugライブラリがリンクされ、それを選択してダウンロードしましょう。
(筆者の考えはPHP環境設定情報でPHPバージョンとタイプ(thread safeかthread unsafeか)を正確に分析するようにソースビューのデータをコピーペしたと思います。)
ダウンロードしたファイルをPHPフォルダのextフォルダにコピーしましょう。
そしてphp.iniファイルを修正しましょう。
zend_extension = d:\apachephp\php\ext\php_xdebug-2.7.2-7.3-vc15-x86_64.dll
上のダウンロードしたページの3番をみればiniファイルの一番下に入れてください」と書いているのでコピーペすればよいです。
そしてサーバを再起動してxDebugセッションがあることを確認できます。
xDebugがPHP開発でどのように使うか確認しましょう。
<?php
class Test {
public function print(){
// Testクラスでメンバー変数dataは宣言してない。
echo $this->data;
}
}
$obj = new Test();
?>
<!DOCTYPE html>
<html>
<head><title>title</title></head>
<body>
<?=$obj->print()?>
</body>
</html>
上の例では$obj変数にTestクラスを宣言してbodyの領域でprint関数を呼出しています。
print関数ではTestクラスのdata変数の値を返却していますが、dataの変数は宣言してないです。エラーになるソースですね。
xDebugを設定する前には下記のイメージみたいに出力します。
それがxDebugを設定する後は下記のイメージみたいに出力します。
call stack表示でどこでエラーが発生したかを追跡ができます。前よりもっと詳しい情報が出るので開発する時に楽になると思います。
実は初めxDebugを設定する理由はEclipseでデバック機能を付いて使おうと思いましたがEclipse側でエラーが発生しますね。
原因はEclipseのバグだといいますが、私の場合は関連資料を調べても解決が出来ないです。もし知ってる方がいらっしゃったらお知らせてください。
link - https://xdebug.org/
- [PHP] Reflection - Class編2020/01/30 03:00:00
- [PHP] エラーページ処理方法(追加: ob_cleanとdie関数使用方法)2020/01/29 03:00:00
- [PHP] 分散設定ファイル(.htaccess) 使用方法2020/01/28 03:00:00
- [PHP] データベース(mariaDB)を連結して使う方法2020/01/24 03:00:00
- [PHP] IOに関して2020/01/23 03:00:00
- [PHP] requireとinclude、そして「@」の使用方法2020/01/22 03:00:00
- [PHP] Fatal及びNotice,、Warningメッセージ処理する方法2020/01/19 03:00:00
- [PHP] xDebug設定する方法2020/01/18 03:00:00
- [PHP] $_SERVER, $GLOBALS, $_GET, $_POST, $_REQUEST, $_COOKIE, $_SESSION, $_FILES, $_ENV(getenv())2020/01/17 03:00:00
- [PHP] データ確認関数(var_dump, debug_zval_dump, print_r)2020/01/16 03:00:00
- [PHP] 例外処理(try ~ catch ~ finally)2020/01/15 03:00:00
- [PHP] 配列とリスト(list)2020/01/14 03:00:00
- [PHP] インタフェースと抽象クラス、クラス継承、parent、this2020/01/13 03:00:00
- [PHP] functionとclass使用方法、アクセス修飾子、そしてstatic2020/01/09 23:35:27
- [PHP] 基本ページ作成方法と変数使用方法2020/01/06 23:44:20
- check2024/04/10 19:03:53
- [Java] 64.Spring bootとReactを連結する方法(Buildする方法)2022/03/25 21:02:18
- [Javascript] Node.jsをインストールしてReactを使う方法2022/03/23 18:01:34
- [Java] 63. Spring bootでcronスケジューラとComponentアノテーション2022/03/16 18:57:30
- [Java] 62. Spring bootでWeb-Filterを設定する方法(Spring Security)2022/03/15 22:16:37
- [Java] JWT(Json Web Token)を発行、確認する方法2022/03/14 19:12:58
- [Java] 61. Spring bootでRedisデータベースを利用してセッションクラスタリング設定する方法2022/03/01 18:20:52
- [Java] 60. Spring bootでApacheの連結とロードバランシングを設定する方法2022/02/28 18:45:48
- [Java] 59. Spring bootのJPAでEntityManagerを使い方2022/02/25 18:27:48
- [Java] 58. EclipseでSpring bootのJPAを設定する方法2022/02/23 18:11:10
- [Java] 57. EclipseでSpring bootを設定する方法2022/02/22 19:04:49
- [Python] Redisデータベースに接続して使い方2022/02/21 18:23:49
- [Java] Redisデータベースを接続して使い方(Jedisライブラリ)2022/02/16 18:13:17
- [C#] Redisのデータベースを接続して使い方2022/02/15 18:46:09
- [CentOS] Redisデータベースをインストールする方法とコマンドを使い方2022/02/14 18:33:07