Probleme mit Test.php und Remoteframework

Dieses Thema im Forum "Installation und Konfiguration" wurde erstellt von sumsebum, 16. Okt. 2007.

  1. sumsebum

    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
     
  2. Till

    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.
     
  3. sumsebum

    sumsebum New Member

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

    Till Administrator

    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.
     
  5. sumsebum

    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)
     
  6. Till

    Till Administrator

    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.
     
  7. sumsebum

    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...
     
  8. Till

    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 ;)
     
  9. sumsebum

    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...
     
  10. Till

    Till Administrator

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

    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...
    
    -->
     
  12. Till

    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.
     
  13. sumsebum

    sumsebum New Member

    das Interface läuft bei mir auf http
     
  14. sumsebum

    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
     

Diese Seite empfehlen