Skickar du rätt header från PHP om man inte är inloggad då?
När jag skriver SOAP-klienter i C# så gör jag som du, men använder inte "PreAuthenticate".
Kod:
ns.WebService ws = new ns.WebService();
ws.Credentials = new System.Net.NetworkCredential("username", "password");
ws.MakeFunnyRequest();