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

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

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

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

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

PhpStorm

PhpStormは、JetBrains社が提供しているPHP向けのIDEです。同社の製品であるWebStormの機能を内包しており、優秀なコード補完やコード分析など多彩な機能を備えています。

Q&A

解決済

2回答

729閲覧

UnityからPOSTでデータを送った際のサーバ(PHP側)のデバッグ方法について

yukiusagi

総合スコア22

PHP

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

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

PhpStorm

PhpStormは、JetBrains社が提供しているPHP向けのIDEです。同社の製品であるWebStormの機能を内包しており、優秀なコード補完やコード分析など多彩な機能を備えています。

0グッド

0クリップ

投稿2017/09/09 17:03

編集2017/09/09 17:18

前提

ゲームアプリ用のAPIを開発しています。
UnityからUnityWebRequestでJSONをPOSTで送り、サーバー上でその値をもとにデータベースを書き換えたり、データベースを取得したりし、結果としてUnityにJsonを返すという流れです。

発生している問題・エラーメッセージ

Postman(またはUnity)を使ってJsonをサーバーに送ると、サーバ上に書いたロジックを通ってJSONが返ってきます。
処理自体には問題がないのですが、コード上にブレークポイントを置いたとしても処理が止まりません。
UnityやPostmanなどからPOSTデータを送り、PHP上のロジックを通っている途中で処理を止めたいのですが、方法が分からず手詰まり状態です。
POSTのデバッグに関してはどのように行うのが良いのでしょうか。

試したこと

GETのデバッグの場合は、ブラウザで該当ページを読み込ませるとXdebugによって処理が止まるのですが、POSTの場合はURLを叩けない(?)ので同じ方法が使えずの状態です。

補足情報(言語/FW/ツール等のバージョンなど)

  • Laravel5.4
  • PhpStorm2017.2(Xdebug導入済み)
  • Unity2017.1
  • PHP7.1
  • Vagrant(Homestead)
  • Postman(POSTデータの送信テストに使用)

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

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

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

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

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

guest

回答2

0

ベストアンサー

サーバーにXDebugを設定してPHPStorm等のIDEでブレークポイントを設定するのがデバッグとして一番高機能ですが、
少し確認する程度であれば、「php artisan serve」でPHPビルトインサーバーを立ち上げて、プログラムの途中で eval(\Psy\sh()); を記入すると、該当プログラムに行き着いた時にビルトインサーバーを立ち上げているターミナルで操作ができるようになって変数の確認などができます。
var_dumpからの卒業、PHP開発を加速するデバッグ手法を考える
LaravelでRailsでいうbinding.pryをしたい
あとは値を確認するのであればdumpヘルパーやloggerヘルパーを使ってプリントデバッグやログ出力が簡単にできます。
データベースにデバッグログを書き出す際は以下のパッケージが使いやすいです。
spatie/activitylog

[追記]
自動テストという観点では、
APIテスト(JSONを出力するような物)は
Laravel 5.5 HTTPテスト
Chromeヘッドレスブラウザでの自動ブラウザ操作テスト(Javascript実行が絡むもの)は
Laravel 5.5 ブラウザテスト(Laravel Dusk)
を活用すると継続的なプログラム開発に役立てることができます。

投稿2017/09/10 08:58

編集2017/09/11 02:21
aro10

総合スコア4106

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

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

yukiusagi

2017/09/11 15:41

いろいろ方法あるんですね、まだまだ未知の世界が多そうです。 教えていただいた方法をひとつひとつ試してみようと思います。 ありがとうございます。
guest

0

ブラウザからGETと同様にアクセスしたいのであれば、

HTML

1<form action="POSTを受けているURL" mthod="POST"> 2 <input type=xxxxx name=xxxx> 3 <input type=submit> 4</form> 5 6

というような感じでHTMLを作ってブラウザで開き、そこから送信してテストを行うことが出来ます。

投稿2017/09/09 18:17

tanat

総合スコア18713

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

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

yukiusagi

2017/09/10 04:39

回答ありがとうございます。 GETの時もそうでしたがこの方法の場合毎回送信する内容を手動で書き換えないといけないでしょうか。 できればUnityでアプリを再生⇒PHP側がブレークポイントで止まるということができればデバッグし易いのですが、こういったことというのはできないでしょうか。 デバッグし易い方法を模索しているのでもし何か良案があればご教示いただけると幸いです
tanat

2017/09/10 17:21

aro10さんの回答の方法は参考になると思います。 別のアプローチとしては、そもそも論としては、せっかくクライアント(Unity)とサーバ(PHP)で別れているのですから、PHPはPHPだけで任意の値をデバッグ出来るように工夫して、Unityと接続するタイミングではPHP側の動作は(少なくとも想定しているテストケースにおいては)正しい状態に保つ方が効率がいいです。 ユニットテストやBDDと言ったツールを使っても良いですし、ハードルが高いようであれば、テストケースごとにHTMLを用意して簡単に再テストが出来るようにしても良いと思います。 HTMLであれば、inputのvalue属性に値をハードコーディングしておけばデフォルト値が定義出来るので、そのHTMLにアクセスしてsubmitするだけで毎回同じ値を送信することが出来ます。
yukiusagi

2017/09/11 15:40

いろいろ試行錯誤している段階ではありますが、分けて考えるのが一番ですかね。 教えていただいた方法を試してみようと思います。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問