Ankündigung

Einklappen
Keine Ankündigung bisher.

failed to load external entity

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • failed to load external entity

    Hallo!

    Hab mich eben registriert und bin somit neu hier. An sich bin ich zwar Entwickler, aber PHP programmiere ich eher selten.

    Ich schlage mich jetzt schon seit Tagen mit einem SOAP/WSDL Problem herum.

    Vor einigen Wochen musste ich interne Server update wo noch alte PHP 5 Versionen liefen. Nach dem Update auf Version 7, liefen alle SOAP Schnittstellen zu unseren Webservices nicht mehr.

    Ich habe mir dann lokal ebenfalls eine Umgebung eingerichtet und probiert das Problem zu lokalisieren. Tatsächlich ging es lokal auch nicht. Also habe ich das Script umgeschrieben und den neuen Anforderungen angepasst. Jetzt läuft es lokal aber jetzt kommts, am Server nicht.

    Ich habe lokal die PHP Version 7.2.10 und am Server 7.2.12. Ich habe die PHP Info durchgeschaut und beide sind in etwa ident, zumindest bei den Dingen die für SOAP relevant werden.

    Also am Server selber hat sich die Infrastruktur nicht geändert, also ich kann den anderen Server pingen und auch wenn ich in der Konsole curle, bekomme ich den Request zurück. Nur eben die PHP Schnittstelle versagt seinen Dienst!

    Folgende Fehlermeldung bekomme ich zurück:

    WSDL: Couldn't load from 'https://XXX.XXX.XXX.XXX:XXXXX/blabla/blablablub/linear-content?wsdl' : failed to load external entity "https:// XXX.XXX.XXX.XXX:XXXXX / blabla/blablablub/linear-content?wsdl" " ["faultcode"]=> string(4) "WSDL" }
    Fatal error: Uncaught Error: Call to undefined method SoapFault::ListLinearContent() in /var/www/html/contego/list_linear_content.php:33 Stack trace: #0 {main} thrown in /var/www/html/contego/list_linear_content.php on line 33

    Hier der Code:


    Code:
    <?php
    
    ini_set("display_errors", "On");
    error_reporting(E_ALL);
    
    $wsdl_url = "'https://XXX.XXX.XXX.XXX:XXXXX/blabla/blablablub/linear-content?wsdl";
    
    $contextOptions = array(
        'ssl' => array(
        'verify_peer' => false,
        'verify_peer_name' => false,
        'allow_self_signed' => false
        ));
    
    $sslContext = stream_context_create($contextOptions);
    
    $params =  array(
        'trace' => 1,
        'exceptions' => true,
        'cache_wsdl' => WSDL_CACHE_NONE,
                                   'login' => "XXX",                                                                                                                                                                                                                                        
                                   'password' => "XXXXXX",                                                   
        'stream_context' => $sslContext
        );
    
    try {
        $proxy = new SoapClient( $wsdl_url, $params );
    } catch (SoapFault $proxy) {
        var_dump(libxml_get_last_error());
        var_dump($proxy);
    }
    
    $response = $proxy->ListLinearContent();
    echo '<pre>';
    print_r($response);
    echo '</pre>';                  
    
    
    ?>
    Vielleicht hat jemand eine Idee...

    Danke!

    Beste Grüße

  • #2
    Ohne die WSDL zu kennen wird es schwierig, einen WSDL-Fehler zu beheben ...

    Kommentar


    • #3
      Funktioniert ein readfile($url)?

      Kommentar


      • #4
        Ein anderes Problem ist das try...catch, nachdem die SOAP Exception gefangen wurde, macht das Script weiter als sei nichts gewesen.

        Kommentar


        • #5
          https://stackoverflow.com/questions/...xternal-entity

          Kurz: Das kann vielerlei Gründe haben, einige "Lösungen" wurden auf SO gepostet... interessant fand ich den (Versuch wert):
          In my case 'allow_self_signed' => true did the trick!
          Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

          Kommentar


          • #6
            Egal in welcher Konstellation ich 'allow_self_signed' verwende ist es lokal wie auch am Server egal. Also false/true bzw. wenn ich es komplett weglasse. Lokal bekomme ich immer eine response, am Server diesen Fehler.

            Bei readfile():
            Warning: readfile(): SSL operation failed with code 1. OpenSSL Error messages: error:1416F086:SSL routines:tls_process_server_certificate:certificat e verify failed in…
            Warning: readfile(): Failed to enable crypto in
            Warning: readfile(…: failed to open stream: operation failed in

            Wenn ich es lokal ausführe.

            Kommentar


            • #7
              certificate verify failed
              Failed to enable crypto
              https://stackoverflow.com/questions/...-enable-crypto
              Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

              Kommentar


              • #8
                SSL operation failed with code 1. OpenSSL Error messages: error:1416F086:SSL routines:tls_process_server_certificate:certificat e verify failed in…
                zieh Dir halt mal das Cert und schaue an was da nicht geht.
                by the way:
                'https://XXX.XXX.XXX.XXX:XXXXX/blabla/blablablub/linear-content
                ist weniger schön als
                'https://´example.com:PORT/blabla/blablablub/linear-content

                Kommentar


                • #9
                  Guten Morgen!


                  Hab mich versucht übers Wochenende einzulesen aber weitergekommen bin ich nur wenig.

                  Wenn du meinst ich soll mir das Cert ziehen, dann muss ich das doch auch in der php.ini deklarieren oder?

                  Kommentar


                  • #10
                    Zitat von lapachon Beitrag anzeigen
                    Guten Morgen!


                    Hab mich versucht übers Wochenende einzulesen aber weitergekommen bin ich nur wenig.
                    eher mal anschauen ob es valide ist, download mit
                    Code:
                    openssl s_client -connect ${REMHOST}:${REMPORT}

                    Kommentar


                    • #11
                      Welches Datum/Zeit liefert der Server?
                      Das Gleiche wie deine lokale Installation?

                      Kommentar


                      • #12
                        War mir nicht aufgefallen aber ja, der Server war in einer anderen Zeitzone.

                        Hab nun die richtige eingestellt und auf CET. Somit haben die lokale Installation und der Server die selbe Zeit und Datumsbasis!

                        Dennoch, selbe Fehlermeldung.

                        Kommentar


                        • #13
                          Uhrzeit != Zeitzone.

                          Kommentar


                          • #14
                            Stimmt, dennoch hab ich überall jetzt die gleiche Zeitbasis.

                            Also, lokal, am Server und auf dem Server wo auch die Webservices laufen.

                            Kommentar

                            Lädt...
                            X