Laravel (PHP)をNetBeans 8.1でステップ実行する

PHP
スポンサーリンク

Laravelを使っていて統合開発環境(IDE)として何を使おうかと悩んでいました。

 

候補としては、NetBeansとPhpStormでした。

PhpStorm IDEはJetBrainsの製品で、有償ですが評判がよいです。

一方で、NetBeansは、Oracle(旧サンマイクロシステムズ)を中心としたオープンソースのコミュニティで開発されています。

悩んだのですが、無料であることは捨てがたく、NetBeansを使ってみて意外とちゃんと使えたので、いまはNetBeansを使っています。

 

スポンサーリンク

Laravel (PHP)をNetBeans 8.1で使う PHP組込みWebサーバーを使う

私の場合、WindowsのXAMPP環境でLaravelの開発を行っています。

XAMPPについては、こちらに記事を書きました。XAMPP

 

Laravelのプロジェクトのプロパティは以下のように設定してみました。

「実行構成」の中で、以下のように設定します。

実行方法(R):「PHP組込みWebサーバー(組込みWebサーバーで実行中)」

ホスト名(U)」:localhost

ポート(P):8000

ルーター・スクリプト(R):public/index.php

 

 

 

C:\xampp\php\php.ini に以下の行を追加します。

 

 

 

このように設定してから「デバッグ」⇒「プロジェクトをデバッグ」で実行します。

こうすると、PHPが持っているWebサーバーでLaravelが実行され、netbeans-xdebugがローカルブラウザと通信します。

そして結果として、ブラウザで操作しながら、NetBeansのPHPがステップ実行されます。

ほとんどの場合、組込みWebサーバーで問題はありません。

 

ちなみに、ブレイクポイントを設定していなくても、index.phpの22行目で必ずいったんブレイクしてしまいます。

require __DIR__.'/../bootstrap/autoload.php';

そのまま実行すれば、進みますがめんどくさいなぁ。

 

 

 

2016/12/5 追記

外部の識者から教えてもらいました。

オプション⇒PHPの画面で「最初の行で停止(T)」のチェックを外せば、最初の行で止まることはなくなります。

 

。。。そういえば、Visual StudioでもEclipseでも同じような設定があったなぁ。

デフォルトで「最初の行で停止(T)」をオンにする気持ちはなんか分かる。

 

 

Laravel (PHP)をNetBeans 8.1で使う ローカルWebサーバーを使う

ところで、組込みWebサーバーで不具合?っぽいことが発生しました。

詳細は以下に記載しました。

Laravel 5 not find http://localhost:8000/css/app.css
I am using Laravel 5 and got "Failed to load resource, the server responded with a status of 404(Not Found) "If my layout.blade.php were <link rel="stylesh...

 

どうも、CDN(コンテンツデリバリネットワーク)から取得したBootstrapを使っている場合は問題ないのですが、ローカルで作成したBootstrapについては正しく読み込んでくれません。

はOK。

 

は次のエラーが出ます。

Failed to load resource, the server responded with a status of 404(Not Found)

 

そこで、組込みのWebサーバーではなくて、XAMPPに付属のApacheを使うことにします。

 

プロジェクトのプロパティで以下のように設定します。

実行方法(R):「ローカルWebサイト(ローカルWebサーバーで実行中)」

プロジェクトURL(U)」:http://localhost/

開始ファイル(I):

 

こうして、デバッグ実行すると無事にデバッグ実行されました。

 

LaravelのPHPファイルの場所のメモ

Laravelは、MVCのデザインパターンに準拠していますが、Model、View、Controllerのファイルの場所はちゃんと整合性がとれていないようです。

それぞれのファイルは以下のフォルダにあります。

Model・・・appの下

View・・・resources\viewsの下

Controller・・・app\Http\Controllersの下

 

うーん、単純にModel、View、Controllerっていうフォルダを作ったらよかったんじゃないかな。

 

 

ViewのBladeファイルをNetBeansでステップ実行するには少しコツが入ります。

 

ViewのBladeファイルは、実行時にはコンパイルされて、storage\framework\viewsというフォルダに入っているからです。

ステップ実行するには、vendor\laravel\framework\src\Illuminate\View\Engines\PhpEngine.phpの42行目あたりにブレークポイントを入れておきます。

 

 

 

include $_path で止まったら、ステップインするとViewのPHPファイルをステップ実行できます。

この時、ファイル名を見てもらえれば分かりますが、元のファイル名ではなくて、暗号化?されているような文字列のファイル名になっています。

 

Laravelでエラーが出たときはログを見る

ところで、Laravelで開発しているときに、エラーが出れば必ずエラーのログを見るべきだと思います。

 

ログファイルは、storage\logs\laravel.log です。

ここにあるスタックトレースを見ればだいたいのことは理由がわかります。

例えば以下のエラーの場合、TokenMismatchExceptionが出ており、CSRFトークンがちゃんと入っていないことが原因と分かります。

 

Laravel 5.1、日本語の詳しい解説書も出ましたね。

 

 

最後まで読んでいただきありがとうござました。
この記事が気に入っていただけたらシェアしてくれると嬉しいです。

コメント

  1. 通りすがり より:

    オプション – PHP – デバッグ – 最初の行で停止

    のチェックを外せば、止まらなくなりますよー。

  2. うらした より:

    おおお。なんと。ありがとうございます!
    さっそく修正しておきました。