1

ここにいい質問があります:)

PHPで記述されたWebサービスをデバッグする必要があります。そのクライアントはC#で書かれています。
数日間検索した後、これは簡単な作業ではないことに気づきました。少なくとも、正しい解決策を誰も知らないようです。

実際、何が問題なのですか?
2つの人気のあるPHPデバッグライブラリがあります。NuSphereのPHPデバッガとXDebug拡張機能です。
問題は、どちらもURLクエリ文字列またはCookieを使用して制御されることです。たとえば、PHPデバッガーを使用したデバッグを有効にするには、URLに?DBGSESSID = xxxパラメーターを追加するか、DBGSESSIDCookieを設定する必要があります。
ただし、Webサービスが外部クライアントから呼び出される場合、クライアントにはCookieがなく、DBGSESSIDurlパラメーターが追加されません。では、この状況でどのようにデバッグできますか?

PS。ログファイルに書き込みたくありません。要求と応答のヘッダー/データなどを参照してください。通常のステップバイステップのデバッグとブレークポイントが必要です。

誰?

4

6 に答える 6

4

さて、私は自分自身に答えています。PHPEdとDBGを使用する場合は、魔法の関数DebugBreak()を使用できます。

PHPEdとPHPDBGListenereが実行されていることを確認し、次のように記述します。

DebugBreak('1@127.0.0.1');

werbserviceのコードのどこにいても、クライアントから電話をかけて、出来上がり!-デバッグモードでその行のPHPEdにいます!

于 2010-03-20T17:15:18.177 に答える
2

1に設定xdebug.remote_autostartすると、常にデバッグできます(要求パラメーターは不要です)。これは、<Location>または<Files>ディレクティブを使用する一部のURLに制限される可能性があります。

または、var_exportを使用して(ジェネリックライブラリが必要な場合はZend_LogまたはPear Logを使用して)デバッグ情報をログに記録します。

迅速で汚い方法は次のとおりです。

file_put_contents('/tmp/log1.txt',
  var_export(array($_REQUEST, $something), true));
于 2010-03-17T20:33:38.803 に答える
0

プラグインPosterを使用して、phpWebサービスのデバッグに役立てています

編集 :

Webサービスをデバッグするためのより良いツールを見つけました:高度なRESTクライアントアプリケーション

これはChromeプラグインであり、RESTを使用するあらゆる種類のWebサービスをテストするのに最適です。

于 2010-03-17T20:25:25.923 に答える
0

ログファイル(meh)にデータを書き込むことができます。

または、応答ヘッダーにデバッグ情報を出力します(クライアントがそれらを表示できる場合)。しかし、ブレークポイントを使用する限り、運が悪いかもしれません。

ローカルコンピューター(Firefoxアドオン改ざんデータに似たもの)での接続ハイジャックを調べて、要求を中断し、urlパラメーターを追加することもできます。

于 2010-03-17T20:25:25.997 に答える
0

SoapUIを試して手動でリクエストを発行し、詳細な応答を取得してください。Cookieを偽造できるかどうかはわかりませんが、エンドポイント、つまりURLをある程度制御することはできます。

于 2010-03-17T20:27:16.650 に答える
0

DBGSESSIDパラメーター(クエリ文字列またはCookie)の有無にかかわらず、デバッグリスナーへの接続を自動的に試行するようにNuSphereの製品を構成できることを覚えているようです。しかし、そうだとすれば私は前向きではありません。ただし、次のようにすることで、探している効果を得ることができます。それはあなたが望んでいるよりも少し手動で集中するかもしれません。

  1. ある種のHTTPクエリ/応答リスナーを設定します。
  2. クライアントからのWebサービスに対して必要なアクセスを実行します。
  3. 適切なDBGSESSIDを追加して、これらのリクエストを手動で再発行します

もう少し初期設定を行いますが、後で摩擦を減らします。

  1. 代替URLにアクセスするようにクライアントを構成します。
  2. そのURLをリッスンするようにプロキシを設定します(デバッグには、個人的には経験がありませんが、Privoxyが推奨されています)。
  3. すべてのリクエストを実際のWebサービスに転送するようにプロキシを構成し、適切なDBGSESSIDパラメーターを追加するか、Cookieを含めます
于 2010-03-17T20:36:30.730 に答える