simplexml_load_file() externe URL (RSS feed) auslesen

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

  • simplexml_load_file() externe URL (RSS feed) auslesen

    Guten Morgen die Herrschaften. Ich stehe gerade vor dem selben Problem wie hier: http://www.php-resource.de/forum/sho...ight=simplexml . Ich hab dort auch gepostet, erhielt jedoch keine Antwort! Ich weiß, der Thread ist alt, dennoch könnte es ja sein, dass mittlerweile wer eine Lösung hat oder wieder wer das selbe Problem hat!

    Ich versuche aus PHP einen RSS Feed von Yahoo auszulesen. Das funktioniert von XAMPP aus problemlos.

    Auf dem echten Server meiner Seite klappt es nicht. Mit den Filerights wird es meiner Meinung nach nicht zusammenhängen. Ich habe jedenfalls den Ordner, in dem das Skript liegt auf 777...

    Hier die selbigen Fehlermeldungen wie im anderen Thread:

    Warning: simplexml_load_file(http://weather.yahooapis.com/forecastrss?p=AUXX0016&u=c) [function.simplexml-load-file]: failed to open stream: Permission denied in /usr/local/www/wwwroot/bmxsquad/bmxsquadlinz/rss_wetter.php on line 94 Warning: Permission deniedI/O warning : failed to load external entity "http://weather.yahooapis.com/forecastrss?p=AUXX0016&u=c" in /usr/local/www/wwwroot/bmxsquad/bmxsquadlinz/rss_wetter.php on line 94

    Und der Quellcode, an dem der Fehler entsteht ist einfach nur der Funktionsaufruf von simplexml_load_file():

    PHP-Code:
        // Yahoooooo Weather 
        
    $url 'http://weather.yahooapis.com/forecastrss?p=AUXX0016&u=c'
       
        
    // Feed laden 
        
    $xml simplexml_load_file($url); 

    Der Provider hat mir versichert, dass alles in Ordnung ist (Zugriff auf externe URLs möglich!) und ich habe auch mit phpinfo() alles mit XAMPP verglichen, passt soweit. Also

    allow_url_fopen -> on
    SimpleXML enabled
    libxml enabled
    xml support auch enabled
    lauft auf php 5.0.5

    Dennoch bekomme ich die Fehlermeldungen! Über hilfreicheTips würde ich mich sehr sehr freuen!

    Lg, Flo
    Zuletzt geändert von ; 14.11.2008, 09:28.

  • #2
    keiner eine idee? nicht mal irgendwas? ein denkanstoß? nix?

    Kommentar


    • #3
      PHP update auf 5.2.irgendwas.

      Kommentar


      • #4
        Hinweis: Libxml 2 demaskiert den URI, wollen Sie also zum Beispiel b&c als Wert für den URI Parameter a verwenden, müssen Sie die Funktion wie folgt aufrufen: simplexml_load_file(rawurlencode('http://example.com/?a=' . urlencode('b&c'))). Seit PHP 5.1.0 wird Ihnen dieser Schritt von PHP abgenommen.
        vielleicht liegt es nur daran

        Kommentar


        • #5
          ok, die URL encodierung wars nicht... hab ich grade getestet, danke für den tipp.

          und bezüglich PHP 5.2 schau ich mal, was mei hoster dazu sagt ... vielleicht macht ers ja und dann sehn wir weiter, ob das was ändert.

          danke mal für die tips. falls noch wer ideen hat, immer gerne

          Kommentar


          • #6
            Vermutlich sendet die Gegenstation einen Status 403 o.ä.


            Teste doch mal:

            PHP-Code:
             $url 'http://weather.yahooapis.com/forecastrss?p=AUXX0016&u=c'
               
                
            // Feed laden 
            copy($url,'./temp.xml');

            // zeig den 403 ;-)
            print_r($http_response_header); 
            Zuletzt geändert von combie; 22.11.2008, 14:35.
            Wir werden alle sterben

            Kommentar


            • #7
              Original geschrieben von combie

              // zeig den 403 ;-)
              print_r($http_response_header);[/php] [/B]
              jetzt muss ich nur noch schnell herausfinden, wie man den response header ausliest... dann schau ich mal, was sich meldet!

              Kommentar


              • #8
                jetzt muss ich nur noch schnell herausfinden, wie man den response header ausliest.
                Habe ich dir doch gezeigt...
                Die genannte Variable wird magisch in dem Namensraum erzeugt, in dem der HTTP Wrapper benutzt wird..
                Wir werden alle sterben

                Kommentar


                • #9
                  Die genannte Variable wird magisch in dem Namensraum erzeugt, in dem der HTTP Wrapper benutzt wird...
                  Ohh, sehr interessant. Das wusste ich auch noch nicht.

                  Kommentar


                  • #10
                    Tja, so kann man vom dümmsten noch was lernen...


                    Dass man an die Header kommt ist schon klasse. Aber die Schnittstelle ist echt dreckig. Wenn man versucht selber solche Variablen (in einem in PHP geschrieben eigenen Wrapper) zu erzeugen, ist "in die Röhre gucken" angesagt.
                    Wir werden alle sterben

                    Kommentar


                    • #11
                      Original geschrieben von combie
                      Habe ich dir doch gezeigt...
                      Die genannte Variable wird magisch in dem Namensraum erzeugt, in dem der HTTP Wrapper benutzt wird..
                      Also da muss ich definitiv irgendwie wiedersprechen, denn beim aufruf von print_r($http_response_header); kommt mir das -->

                      Notice: Undefined variable: http_response_header in /usr/local/www/wwwroot/bmxsquad/bmxsquadlinz/rss_wetter.php on line 99

                      Daraus schließen wir? *confused*
                      Zuletzt geändert von ; 23.11.2008, 10:01.

                      Kommentar


                      • #12
                        Unsinn!
                        http://de3.php.net/manual/de/wrappers.http.php

                        Daraus schließen wir?
                        Das dein Wrapper anders funktioniert, als meiner. (Wenn deiner denn überhaupt funktioniert)
                        Oder du hast einen Bock in deinem Script geschossen.

                        Evtl. solltest du dein PHP mal ohne und mal mit der cURL Extension laufen lassen. Meines bescheidenen Wissens nach, tauscht cURL den eingebauten HTTP Wrapper aus.


                        Preisfrage:
                        Kannst du denn das Feed mit file_get_contents u.s.w. holen?
                        Evtl. fällt ja nur das XML Gedöns, per URL, auf die Nase.



                        und bezüglich PHP 5.2 schau ich mal, was mei hoster dazu sagt
                        Welche PHP Version nutzt du denn?
                        Zuletzt geändert von combie; 23.11.2008, 11:15.
                        Wir werden alle sterben

                        Kommentar


                        • #13
                          lauft auf php 5.0.5, steht im ersten post.

                          mit file_get_contents() bekomme ich genau dieselbe fehlermeldung. ebenfalls mit file(), readfile() und fopen().

                          die curl extension ist nichtmal installiert .

                          irgendwie kommen wir nicht weiter... :/ *damn* übersehen wir was? schön langsam hab ich bock das alles sein zu lassen. ich verstehs einfach nicht

                          surft hier keiner der PHP developer rum !?
                          Zuletzt geändert von ; 23.11.2008, 21:51.

                          Kommentar


                          • #14
                            surft hier keiner der PHP developer rum
                            Nicht, dass ich wüsste...

                            Die würden auch nur sagen:
                            1. 5.0.5 ist arg veraltet.
                            2. Stoß deinem Provider Bescheid
                            Wir werden alle sterben

                            Kommentar


                            • #15
                              Vielleicht liegt es ja garnicht an PHP, sondern der Provider blockt irgendwo den ausgehenden Verkehr auf Port 80!?

                              Das kannst Du ja mal mit wget auf der Shell oder als CGI-Script überprüfen.

                              Kommentar

                              Lädt...
                              X