# Probleme mit Test.php und Remoteframework



## sumsebum (16. Okt. 2007)

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 (16. Okt. 2007)

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 (16. Okt. 2007)

also kann ich in der test.php die soap.lib auskommentieren ...


----------



## Till (16. Okt. 2007)

Zitat von sumsebum:


> also kann ich in der test.php die soap.lib auskommentieren ...


Ja. Aber die PHP SOAP Funktionen sind nicht identisch mit denen von NUSOAP (andere Funktionsnamen und Parameter). Du müsstest dann neuen Code für die Beispiele schreiben, der an die PHP Soap Funktionen angepasst ist.


----------



## sumsebum (16. Okt. 2007)

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)


----------



## Till (16. Okt. 2007)

Zitat von sumsebum:


> 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)


Das ist irgendwie auch keine Lösung.. Ich werde mal veruschen, eines der Beispiele für die PHP SOAP Klasse umzuschreiben. Das werde ich heute aber nicht mehr schaffen.


----------



## sumsebum (16. Okt. 2007)

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 (16. Okt. 2007)

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:


```
$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 (16. Okt. 2007)

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 (16. Okt. 2007)

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


----------



## sumsebum (17. Okt. 2007)

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


```
−
    <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 (17. Okt. 2007)

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 (17. Okt. 2007)

das Interface läuft bei mir auf http


----------



## sumsebum (17. Okt. 2007)

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 

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


----------

