PHP ile yazılmış bir web hizmeti hata ayıklama nasıl?

6 Cevap php


I've got a nice question here :)

I need to debug my web service written in PHP. Its client is written in C#.
After a couple of days of searching I realized this is not an easy task. At least it seems nobody knows the right solution.

What is the problem in, actually?
We have 2 popular PHP debugging libraries : PHP Debugger from NuSphere and XDebug extension.
The problem is they both are controlled from URL query string or with the help of cookies. For example, to enable debugging with PHP Debugger you need to add ?DBGSESSID=xxx parameter to your URL or to have DBGSESSID cookie.
But when your web service is called from the external client, the client doesn't have a cookie and doesn't add DBGSESSID url parameter. So how can we debug in this situation?

PS. I don't want to write to log files, see request and response headers/data or something like this. I want normal step-by-step debugging and breakpoints.

Herkes?

6 Cevap

Well, I am answering to myself. If we use PHPEd & DBG, then we can use the magic function DebugBreak().

Emin olun PHPEd & PHP DBG Listenere yazmak, çalışan

DebugBreak('1@127.0.0.1');

Her yerde werbservice kodunda, bir istemciden çağrı ve voila olun! - Eğer hata ayıklama modu o hat üzerinde PhpED vardır!

Her zaman hata ayıklama (gerekli hiçbir istek parametresi) için xdebug.remote_autostart 1'e set olabilir. Bu direktifine.

Ya da sadece var_export kullanarak (bir genel kütüphane istiyorsanız Zend_Log veya Armut Oturum kullanarak) bazı hata ayıklama bilgileri günlüğe.

hızlı ve kirli bir yoludur:

file_put_contents('/tmp/log1.txt',
  var_export(array($_REQUEST, $something), true));

Benim php webcoder hata ayıklama yardımcı eklenti Poster kullanın

Edit:

Hata ayıklama web hizmeti için daha iyi bir araç bulundu: Advanced REST client Application

Bu bir Chrome eklentisi bulunuyor DİNLENME kullanan web hizmetleri her türlü test etmek için harika çalışıyor

Sen bir günlük dosyasına veri yazmak olabilir (meh).

Veya çıkış (istemci bunları görebilirsiniz eğer) cevap başlıklarında hata ayıklama bilgileri. Ama bildiğim kadarıyla kesme noktaları kullanılarak, şans dışında olabilir.

Ayrıca kesme isteği ve url parametre ekleyebilirsiniz yerel bilgisayarınıza (firefox addon kurcalamak Veri benzer bir şey) ile ilgili bağlantı kaçırma içine bakmak olabilir.

SoapUI elle istekleri sorun ve ayrıntılı yanıtlar almak için deneyin. Eğer sahte çerez olabilir, ancak bitiş noktaları kontrol edebilirsiniz, ve bir ölçüde bu nedenle URL emin değilim.

Ben otomatik olarak (sorgu dizesi ya da çerez olarak) DBGSESSID parametresi ile veya olmadan hata ayıklama dinleyiciye bağlanmaya çalışmak için NuSphere ürünü yapılandırmak olduğunu hatırlar gibiyim. Bu durumda eğer ben olsa, olumlu değilim. Ancak, aşağıdakileri yaparak aradığınız etkiyi elde edebilirsiniz. Bu, sizin için umut konum biraz daha elle yoğun olabilir.

  1. HTTP sorgu / yanıt dinleyici Kur çeşit.
  2. Istemci web servis karşı arzu erişimi gerçekleştirin.
  3. Uygun DBGSESSID eklenerek elle yeniden ihraç bu istekleri,

Biraz daha ilk kurulum için, ancak daha düşük sürtünme ayıklama sonra:

  1. Alternatif bir URL erişmek için müşteri yapılandırın.
  2. Kur bu URL (ben şahsen onunla hiçbir deneyime sahip olsa hata ayıklama için, ben, Privoxy önerilir gördüm) dinlemek için bir proxy.
  3. Uygun bir DBGSESSID parametre ekleme veya çerez dahil olmak üzere, gerçek web servisine tüm isteklerini iletmek için proxy yapılandırmak