Probleme mit Test.php und Remoteframework

sumsebum

New Member
Hallo,

ich habe heute nun auf die neue Version 2.2.18 geupdatet. Hab dabei auch gleich die Sachen für das Remoteframework eingestellt (disable XML Kram entfernt). Ging alles soweit gut.

Danach habe ich das Remoteframework installiert. Hab dort ein paar kleine Probleme gehabt, das das Framework unter der de Seite nicht existiert (404). Konnte es nur von der org Seite installieren.

hab danach meinen Remoteuser angelegt. Allerdings ohne IP (ich wuste nicht was dort rein soll).

Danach hab ich test.php und die soaplib in ein Verzeichnis kopiert. In der test.php habe ich die nötigen Angaben zum Remoteuser, Server, etc gemacht.

Leider bekomme ich nun beim Aufruf von test.php immer folgende Meldung:

Fatal error: Cannot redeclare class soapclient in /var/www/web1/web/remoting_example/soap.lib.php on line 4101

kann mir hier einer Helfen?

Danke Rene
 

Till

Administrator
Das Problem ist, dass im remoting Beispiel eine Klasse mit dem Namen soap definiert ist, die mit der internen PHP Klasse soap in aktuellen PHP Versionen kollidiert. Du kannst entweder in internen PHP soap Funktionen deaktivieren, oder aber Du benutzt die PHP eigene SOAP Funktion.
 

sumsebum

New Member
ok, also eher php5 ohne soap.... dazu muß ich dann sicher php5 neu kompilen... oder kann ich das in irgendeiner ini auskommentieren ... (achso mein System läuft mit Debian Etch)
 

sumsebum

New Member
OK.... die Lösung ist es nicht ......

wo finde ich Informationen zu den Unterschieden der beiden Klassen? Ich kenne bis jetzt nur nusoap...

Dann könnte ich mich damit ja mal beschäftigen...
 

Till

Administrator
Die PHP SOAP klasse ist direkt auf php.net dokumentiert:

http://www.php.net/manual/de/ref.soap.php

Ich habe mal kurz draufgesehen, ich denke es müsste irgendwie so gehen:

Code:
$server_url = "http://192.168.0.110:81";

soap_location = $server_url.'/remote/index.php';
$soap_uri = $server_url.'/remote/';


// Create the SOAP Client
$soapclient = new SoapClient(null, array('location' => $soap_location,
                                     'uri'      => $soap_uri));

$parameters = array('user' => 'admin',
                    'pass' =>  'admin');

try {

$session_id = $soapclient->login($parameters);

// Hole Reseller Liste
$params = array (         'sid'        => $session_id,
                                        'module'         => 'reseller',
                                        'function'         => 'reseller_list',
                                        'params'        => '');


$reseller_list = $soapclient->service($params);

$session_id = $soapclient->logout($session_id);

} catch (SoapFault $e) {
    die('SOAP Error: '.$e->getMessage());
}

Ich hab den Code aber nicht getestet ;)
 

sumsebum

New Member
habs gerade getestet, oben bei soap_location fehlte das $,

danach kommt bei mir

"SOAP Error: looks like we got no XML document"

werde nochmal darüber schlafen...
 

Till

Administrator
Ruf doch mal die URL von $soap_location manuell im Browser auf, erhältst Du dann ein SOAP Dokument?
 

sumsebum

New Member
Das ist der Output, wenn ich $soap_location im Browser aufrufe

Code:
−
    <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
−
    <SOAP-ENV:Body>
−
    <SOAP-ENV:Fault>
<faultcode>Server</faultcode>
<faultactor>method '' not defined in service ''</faultactor>
<faultstring/>
−
    <detail>
<soapVal xsi:type="xsd:string"/>
</detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
−
    <!--

soap_server: entering parseRequest() on 08:20 2007-10-17
soap_server: Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
soap_server: Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
soap_server: Accept-Encoding: gzip,deflate
soap_server: Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
soap_server: Connection: keep-alive
soap_server: Host: 77.104.253.168:81
soap_server: Keep-Alive: 300
soap_server: User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7
soap_server: got encoding: UTF-8
soap_server: method name: 
soap_server: method '' not found!
soap_server: parser debug: 
soap_parser: xml was empty, didn't parse!

soap_server: server sending...

-->
 

Till

Administrator
Das sieht soweit ok aus. Läuft das ISPConfig interface bei Dir auf http oder https? Wenn es auf https läuft, muss Dein PHP auch openSSL geladen haben.
 

sumsebum

New Member
puh, das war eine schwere Geburt....... ich hab es nun doch zum laufen bekommen, jedoch nur mit nusoap (dazu habe ich wie im engl. Forum beschrieben aus $soapclient => $soap_client gemacht).

Den eigentlichen Fehler habe ich aber erst entdeckt, nachdem ich test.php debugt habe.

einfach kurz vor "Script ends" folgende Zeilen eingefügt:


echo 'Request: <xmp>'.$soapclient->request.'</xmp>';
echo 'Response: <xmp>'.$soapclient->response.'</xmp>';
echo 'Debug log: <pre>'.$soapclient->debug_str.'</pre>';

damit habe ich dann auch meinen Fehler gefunden, welcher ganz einfach war....

ICH HATTE VERGESSEN EIN ARRAY AUSZUKOMMENTIEREN :cool:

Ist natürlich super peinlich .....

Ich werde mich aber dennoch mal mit den Bordmitteln php soap beschäftigen, muß ja auch anders gehen......

Beste Grüße Rene
 

Werbung

Top