[PHP5] Kann serverseitig nicht auf Webseiten zugreifen

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

  • [PHP5] Kann serverseitig nicht auf Webseiten zugreifen

    Hallo,

    ich hab ein Problem und weiß absolut nicht weiter.
    Ich hab einen Windows 2008 Server mit IIS 7 und PHP 5.2.9 darauf laufen.
    Soweit funktioniert das auch super!

    Allerdings kann über mein PHP-Skript, also quasi serverseitig keine Webseiten aufrufen, egal ob die extern liegen oder lokal auf meinem Server.

    Wenn ich z.B. eine Seite auf meinem Server über file_get_contents() aufrufe, bekomm ich folgende Fehlermeldung:
    [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 500 Internal Server Error in C:\inetpub\wwwroot\includes\klasse.class.php on line 227
    wenn ich es über cUrl versuche:
    Couldn't found host
    Das gleiche Verhalten ist auch auf einem Windows 2003 Server mit Apache und PHP aufgetreten.

    Ich schlussfolger daraus, dass es was mit den Rechten vom Windows Server zu tun hat, aber ich hab schon Stunden gesucht und nix gefunden!

    In der php.ini ist "allow_url_fopen" auch auf "On"!

    Weiß jemand wo der Fehler liegt und kann mir weiterhelfen? Danke!

  • #2
    Das wird nicht an deiner Konfiguration liegen, sondern eher am Status 500 der gegenseite.

    Ruf die Seite die du versuchst zu lesen mal im Browser auf.
    gruss Chris

    [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

    Kommentar


    • #3
      Nein, liegt es nicht.
      Wenn ich den Link im Browser aufrufe, den ich mit file_get_contents() holen will, geht das im Browser ohne Probleme!
      ?

      Kommentar


      • #4
        Es liegt trotz allem nicht an dem Script, sondern an der gegenstelle. Ein 500 fehler ist kein Client Problem.
        gruss Chris

        [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

        Kommentar


        • #5
          Ist im URI irgendwelche Sonderzeichen, z.B. Leerzeichen? Wenn ja, hast du die URI vorher mit urlencode behandelt?

          Kommentar


          • #6
            Ich wollte gerade noch ähnliches hinzufügen.
            Falls du etwas wie

            PHP-Code:
            file_get_contents('http://example.com/?'.$parameter); 
            benutzt, wäre es Vorteilhaft sich das Ergebnis vorher mal anzusehen.

            PHP-Code:
            $url 'http://example.com/?'.$parameter;
            echo 
            $url;
            file_get_contents($url); 
            Falls die Url statisch ist, trotz allem mal auf Sonderzeichen achten.
            gruss Chris

            [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

            Kommentar


            • #7
              Ja, wird halt ein Sicherheitsproblem beim Windows 2008 Server bzw. IIS 7 sein.

              Nur welches?

              Und egal ob ich das Script mit http://Servername/ oder http://localhost/ aufrufe, serverseitig geht da garnix.

              Aber clientseitig über den Browser ohne Probleme!

              file_get_contents() nutze ich eigentlich auch garnicht. nur zum Testen.
              Ich nutz cUrl, aber auch damit gehts nicht...

              Der Link enthält keiner Sonderzeichen, der ist vollkommen in Ordnung. Ich lass mir den Link in der Error-Ausgabe mit ausgeben. und wenn ich den im Browser öffne, klappt das ohne Problem!
              Zuletzt geändert von TriphunEM; 24.03.2009, 10:54.

              Kommentar


              • #8
                Und WIE versuchst du es über curl ?
                gruss Chris

                [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                Kommentar


                • #9
                  Evtl. möchte die Gegenstelle einen bestimmten Request-Header wie z.B. den User-Agent sehen, bevor er sich die Mühe macht was auszuliefern



                  Original geschrieben von TriphunEM
                  Ja, wird halt ein Sicherheitsproblem beim Windows 2008 Server bzw. IIS 7 sein.
                  Nein - mit ziemlich hoher Wahrscheinlichkeit nicht.
                  Zuletzt geändert von Quetschi; 24.03.2009, 11:57.
                  Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                  Schön - etwas Geschichte kann ja nicht schaden.
                  Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                  Kommentar


                  • #10
                    Original geschrieben von TriphunEM
                    Nein, liegt es nicht.
                    Wenn ich den Link im Browser aufrufe, den ich mit file_get_contents() holen will, geht das im Browser ohne Probleme!
                    ?
                    Dann schau dir doch mal die HTTP-Header an, die der Browser sendet, um an die Web-Seite zu kommen. Für'n FireFox gibts dafür Erweiterungen wie LiveHTTPHeaders oder TamperData.
                    Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

                    Kommentar


                    • #11
                      Oder per Telnet einfach mal einen "Minimal"-Request absetzen und gucken ob dann wieder der 500er Response kommt.
                      Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                      Schön - etwas Geschichte kann ja nicht schaden.
                      Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                      Kommentar


                      • #12
                        Naja ich denke meine Curl-Anfrage kommt den des Browser schon sehr nah:

                        PHP-Code:
                                public function ax_openSite($strUrl) {

                                    
                        $arrHeader = array(); 
                                    
                        $arrHeader[] = 'User-Agent: '.$_SERVER['HTTP_USER_AGENT'];
                                    
                        $arrHeader[] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
                                    
                        $arrHeader[] = 'Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3';
                                    
                        $arrHeader[] = 'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7';
                                    
                        $arrHeader[] = 'Keep-Alive: 300';
                                    
                        $arrHeader[] = 'Proxy-Connection: keep-alive';
                                    
                        $objCUrl curl_init();
                                    
                        curl_setopt($objCUrlCURLOPT_URL$strUrl);
                                    
                        curl_setopt($objCUrlCURLOPT_HTTPHEADER$arrHeader);
                                    
                        curl_setopt($objCUrlCURLOPT_HEADERtrue);
                                    
                        curl_setopt($objCUrlCURLOPT_RETURNTRANSFERtrue);
                                    
                        curl_setopt($objCUrlCURLOPT_HTTP_VERSIONCURL_HTTP_VERSION_1_1);
                                    
                        curl_setopt($objCUrlCURLOPT_TIMEOUT10);
                                    
                        //curl_setopt($objCUrl, CURLOPT_PROXY, 's01');
                                    //curl_setopt($objCUrl, CURLOPT_PROXYPORT, 8080);
                                    
                                    
                        $strPageContent curl_exec($objCUrl);
                                    if (
                        curl_error($objCUrl)) {
                                        
                        $this->ax_addError(curl_error($objCUrl).' ('.$strUrl.')');
                                        return 
                        false;
                                    }
                                    
                        curl_close($objCUrl);
                                    return 
                        $strPageContent;        
                                } 

                        Kommentar


                        • #13
                          Das hab ich mal zu dem gleichen Problem zu IIS 6 gefunden. Allerdings unterscheidet sich das ziemlich stark zu 7er Version
                          http://www.iishacks.com/index.php/20...ents-on-iis-6/

                          Kommentar


                          • #14
                            Abgesehen davon, glaube ich nicht das "Couldn't found host" die geworfene Fehlermeldung ist.
                            gruss Chris

                            [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                            Kommentar


                            • #15
                              Kopfkratz - vielleicht möchte bei Verwendung von HTTP1.1 Curl noch den Host-Header gesondert mitübergeben haben?
                              Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                              Schön - etwas Geschichte kann ja nicht schaden.
                              Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                              Kommentar

                              Lädt...
                              X