k0ph Geschrieben 15. Dezember 2005 Geschrieben 15. Dezember 2005 Hallo allerseits, ich hadere hier seit tagen mit folgendem Problem. Ich versuche auf einem entfernten Server per fopen daten zu holen und hier zu verarbeiten. Ziel ist es am ende das ganze natürlich per https zu realisieren. Aber fangen wir erst mal mit http an, denn noch nicht mal das geht. Ist-Stand: Ich habe einen apache 2.2 und php 5.5.1. php kompiliert mit ./configure' '--with-apxs2=/usr/local/apache2/bin/apxs' '--enable-track-vars=yes' '--enable-url-includes' '--enable-sysvshm=yes--enable-sysvsem=yes' '--disable-ipv6' '--enable-force-cgi-redirect' '--with-gettext' '--with-openssl=/usr/local/' Soweit so gut. Wenn ich jetzt mein script aufrufe, eine php datei im root verzeichnis, bekomme ich immer folgende fehlermeldung: [function.fopen]: failed to open stream: Connection refused Ich habe schon sämtliche apache und php kombinationen und configurations parameter probiert. Er scheitert immer am fopen. Wenn ich das script hier auf einem anderen server mit einem IIS 5.0 aufrufe, funktioniert zumindest der http stream einwandfrei. Allerdings mit https klappt es auch da nicht. Hier noch die entscheidenden Zeilen aus dem php script: $AURL = "http://user:pass@server.de/cgi-bin/ceg/inquire.cgi?FORMAT=XML" . // Testserver .... Daten requesten .... if (!($fp = fopen($AURL, "r"))) die("could not open XML input"); $data = fread($fp, 999999); fclose($fp); .... array füllen und ausgeben .... Danach soll einfach zu testzwecken ein array mit dem inhalt aus dem stream ausgegeben werden. Bin für jeden Tipp dankbar mfg k0ph Zitieren
tobias-digital Geschrieben 15. Dezember 2005 Geschrieben 15. Dezember 2005 Kam PHP zum Schluss, dass es sich bei filename um ein registriertes Protokoll handelt, und ist dieses Protokoll als eine Netzwerk URL registriert, prüft PHP, ob allow_url_fopen aktiviert ist. Ist es nicht aktiviert, gibt PHP eine Warnung aus, und der Aufruf von fopen wird scheitern. Schon geprüft? Ansonsten probier mal mein Script "Webseiten Fälscher": http://www.tobias-digital.de/index.php?id=2&no_cache=1&tx_eeblog[pointer]=0&tx_eeblog[showUid]=18 Zitieren
k0ph Geschrieben 15. Dezember 2005 Autor Geschrieben 15. Dezember 2005 hi tobi! danke für Deine Antwort. Ich glaube das bringt uns auf die richtige Spur. Directive Local Value Master Value allow_url_fopen On On Also das ist definitiv an! Allerdings wenn ich Dein Script aufrufe kommt: Warning: fopen(http://www.spiegel.de) [function.fopen]: failed to open stream: Connection refused in /usr/local/apache2/htdocs/url.php on line 10 Warning: feof(): supplied argument is not a valid stream resource in /usr/local/apache2/htdocs/url.php on line 11 Warning: fgets(): supplied argument is not a valid stream resource in /usr/local/apache2/htdocs/url.php on line 12 Warning: feof(): supplied argument is not a valid stream resource in /usr/local/apache2/htdocs/url.php on line 11 usw . usw. hmmm was stimmt da nicht?? Zitieren
tobias-digital Geschrieben 15. Dezember 2005 Geschrieben 15. Dezember 2005 Kannst Du denn auf der Shell mit dem Webserver-Benutzer den Server erreichen? Z.B. mit lynx http://www.spiegel.de ? Zitieren
k0ph Geschrieben 15. Dezember 2005 Autor Geschrieben 15. Dezember 2005 Aha, danke. Da haben wir des Pudels Kern wohl. lynx www.spiegel.de ergibt: Looking up www.spiegel.de first Can't Access `http://www.spiegel.de/' Alert!: Unable to access document. lynx: Can't access startfile und nü? pingen und namensauflösung funktioniert aber. auch wenn ich sage -> dig www.spiegel.de <- löst er mir das korrekt auf. ;; QUESTION SECTION: ;www.spiegel.de. IN A ;; ANSWER SECTION: www.spiegel.de. 70881 IN A 195.71.11.67 Zitieren
tobias-digital Geschrieben 15. Dezember 2005 Geschrieben 15. Dezember 2005 und was sacht telnet www.spiegel.de 80 Zitieren
k0ph Geschrieben 15. Dezember 2005 Autor Geschrieben 15. Dezember 2005 Alos nachdem ich jetzt unseren proxy per export befehl eingetragen hab , kann ich jetzt mit lynx auf spiegel.de zugreifen. Allerdings bringt das script immer noch die gleiche fehlermeldung. Wie kann ich denn für alle Benutzer im System sagen benutzt den proxy? Mit www-data oder daemon kann ich mich ja nicht anmelden an der shell. Achso, telnet bringt nichts. Ausser port 80 und 443 ist nichts offen in der Firewall. mfg k0ph Zitieren
kills Geschrieben 15. Dezember 2005 Geschrieben 15. Dezember 2005 Du musst dem WWW Daemon eben auch die ENV Var mitgeben set_env() oder direkt in der PHP.ini Gruß, Markus Zitieren
k0ph Geschrieben 15. Dezember 2005 Autor Geschrieben 15. Dezember 2005 hi kills, danke für den Hinweis. Ich habe jetzt set_env() direkt in die php.ini eingetragen. info.php zeigt mir jetzt auch einen kompletten enviroment auszug an mit HTTP_PROXY etc. das hat also geklappt. Was leider immer noch nicht klappt ist mein script, und das von tobias url.php leider auch nicht. danke & gruß k0ph Zitieren
k0ph Geschrieben 19. Dezember 2005 Autor Geschrieben 19. Dezember 2005 Hallo allo, also ich poste mal einen etwas größeren codeschnipsel. Vielleicht hilft euch das bei der Fehlersuche. Falls jemand noch eine Idee hat wäre das echt fantastisch. Hänge jetzt seit Tagen vor diesem Problem und sehe bald nur noch Bahnhof :eek $AURL = "http://Benutzername:Passwort@test.server.de/cgi-bin/ceg/inquire.cgi?FORMAT=XML" . // Testserver "&REQSOURCECODE=".URLEncode("Wert1"). "&HIDSUBSCRIBERCODE=".URLEncode("Wert2"). . . . "&HIDSUBSCRIBERCODE=".URLEncode("Wert12"); if (!($fp = fopen($AURL, "r"))) die("could not open XML input"); $data = fread($fp, 999999); fclose($fp); Wie gesagt, bereits nach fopen bleibt er hängen und mahnt an: "no stream, connection refused" Meine Vermutung ist folgende: Wenn ich per lynx die url so aufrufe wie sie oben im script steht, mit benutzername und passwort in der url dann meckert er 1.) "Alert!: Address contains a username: Benutzername:Passwort" und danach: 2.) "Alert!: HTTP/1.0 503 Service Unavailable" und zeigt mir anschließend: 3.) "Failed to resolve the name of server Benutzername to connect" Hat der Fehler vielleicht was mit dem HTTP REQUEST zu tun. Das der Apache es nicht gebacken bekommt? Habe schon google etc. nach fopen und http authentication etc. Kam auch viel response, aber wirklich schlauer bin ich nicht. danke für eure hilfe. mfg Zitieren
k0ph Geschrieben 19. Dezember 2005 Autor Geschrieben 19. Dezember 2005 ok, problem gelöst. grrrrrr, proxy umgangen und dann hat es funktioniert :-( wahrscheinlich scheiterte es an fopen() in zusammenspiel mit der http authentifizierung durch den proxy o.ä... thx an alle! mfg Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.