Ich habe einen Code, der sich über SOAP mit einem Newsletter-Dienst verbindet. Er funktioniert problemlos auf unserem Entwicklungsserver, aber auf unserem Live-Server funktioniert er überhaupt nicht. Es werden keine Fehler zurückgegeben, nur eine leere weiße Seite. Ich habe einige error_logs in den Code eingefügt und genau die Stelle gefunden, an der es nicht mehr funktioniert - in der Zeile, die den neuen SoapClient erstellt. Gibt es eine Art von Serverkonfiguration, die eingestellt werden muss? Unser Code ist identisch zwischen Dev und Prod, so dass das einzige, was ich herausfinden kann, ist ein Serverproblem. (Beachten Sie, dass der erste Teil des Codes unten vom Newsletter-Dienst bereitgestellt wurde, nicht von mir geschrieben).
# bronto API session/connection setup
ini_set("soap.wsdl_cache_enabled", "0");
date_default_timezone_set('America/Chicago');
$wsdl = "https://api.bronto.com/v4?wsdl";
$url = "https://api.bronto.com/v4";
/*error log statements up to this point return what is expected;
an error log after the following line (starting with $client = new SoapClient)
does not get triggered at all. */
$client = new SoapClient($wsdl, array('trace' => 1, 'encoding' => 'UTF-8'));
$client->__setLocation($url);
$token = "XXX";
$sessionId = $client->login(array("apiToken" => $token))->return;
$client->__setSoapHeaders(array(new SoapHeader("http://api.bronto.com/v4",
'sessionHeader',
array('sessionId' => $sessionId))));
Ich habe auch etwas Ähnliches versucht, um explizit alle Fehler zu sehen, aber kein Glück - immer noch nichts im Fehlerprotokoll.
try {
$client = @new SoapClient($wsdl, array('trace' => 1, 'encoding' => 'UTF-8'));
}
catch (SoapFault $E) {
error_log($E->faultstring) ;
}
error_log("ok");
0 Stimmen
Ich würde die installierten PHP-Pakete auf dem Dev-Server überprüfen und mit denen auf dem Prod-Server vergleichen. fr2.php.net/handbuch/de/soap.setup.php
1 Stimmen
Schalten Sie error_reporting ein. Ein "weißer Bildschirm" bedeutet normalerweise, dass PHP gekotzt hat und so eingestellt wurde, dass es alle Fehler ausblendet, so dass Sie nichts sehen. Wenn PHP so konfiguriert wurde, überprüfen Sie auch die Fehlerprotokolle des Servers (und/oder von PHP), um zu sehen, ob dort etwas zu finden ist. Vielleicht werden keine Fehlermeldungen im Browser ausgegeben, aber sie könnten irgendwo protokolliert werden.
0 Stimmen
@Phil, danke. Ich habe das gerade gemacht, und Überraschung! Auf unserem (gehosteten) Live-Server ist SOAP überhaupt nicht installiert! Wenn Sie diesen Kommentar in eine Antwort verschieben möchten, werde ich ihn akzeptieren, damit Sie Anerkennung erhalten.
0 Stimmen
@Marc, wir haben error_reporting eingeschaltet, und wie ich schon sagte, zeigte error_log nichts in der Zeile, die explodierte.
0 Stimmen
Ungerade - ich hatte ein ähnliches Problem, aber wenn ich den try/catch-Block tat es bombardiert die Fehler und ich herausgefunden, mein Problem.