fopen local und auf dem server

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

  • fopen local und auf dem server

    Hi

    Gibt es da Unterschiede, oder etwas was ich beachten muss?

    Ich habe eine Funktion:
    PHP-Code:
    function makeTest() {
     
    $TestAusl fopen ("http://www.domainl.tld/dateiauslese.php""r");
     
    $test = @fgets($TestAusl4096);
     @
    fclose ($TestAusl );
     return 
    $test;

    Nun habe ich damit folgendes Problem:
    Wenn ich die Datei dateiauslese.php im Browser direkt aufrufe geht es und die Datie gibt mir das aus was er in der funktion auslesen soll.

    Wenn ich diese Funktion auf meinem lokalen Webserver nutze (Die Datei dateiauslese ist online) liest er mir alles richtig aus.

    Wenn ich diese funktion jedoch auf meinem webserver nutze, läd er ewig und bricht irgendwann ohne fehler ab. mit seite kann nicht angezeigt werden.

    Ich war der meinung auf dem alten Webserver hat dies geklappt. An was kann das liegen? Also wo muss ich den fehler suchen?

    Auch wenn ich eine textdatei mti fopen einlesen würde mit dem pfad ./test.txt geht es. wenn ich jedoch wieder mit einer URL arbeite und nicht nur den Pfad passiert das selbe.

    Danke schonmal für eure Tipps.

    Gruss Olli4
    Zuletzt geändert von Olli4; 01.05.2008, 11:25.

  • #2
    phpinfo() gibt dir gern Auskunft über allow_url_fopen, wenn OFF eingestellt ist, dann geht es nicht.

    Kommentar


    • #3
      Hi

      Danke dir. Ist eigentlich auf ON. wo muss ich dann den fehler suchen?
      allow_url_fopen ON

      Gruss

      Olli4

      Kommentar


      • #4
        Lesen: http://www.php-resource.de/forum/sho...threadid=50454

        error_reporting(E_ALL);
        ini_set("display_errors", ON);

        wird dir helfen, Fehlermeldungen zu bekommen.

        Kommentar


        • #5
          Hi

          Danke. Jedoch bringt mir dies leider nichts.

          Ich bekomme keine Fehlermeldung. Wie gesagt kann ich die Funktion lokal aufrufen. Auf dem server nicht. Dort läd er einfach eine gewisse Zeit und bringt dann Die Seite kann nicht angezeigt werden. Mit dem error_reporting ist es das selbe spiel. Er bricht das laden ab.

          EDIT: Wenn ich die Datei mit fopen direkt öffne also nicht über die url sondern einfach ./datei.php gehts und e_all gibt keine fehler aus von diesem code. wenn ich es aber via URL aufrufe (Muss ich leider so haben) gehts nicht.

          EDIT2 Habe mal folgendes als Code gemacht als einziges in der Datei:
          error_reporting(E_ALL);
          ini_set("display_errors", ON);
          $TestAusl = fopen ("http://www.domainl.tld/dateiauslese.php", "r");
          So läd er auch ewig ohne Fehler ausgabe oder so. Wenn ich diesen Code local habe (mit dem fopen auf den webserver geht es). Gibt es da noch eine Einstellung oder so? Bin irgendwie ratlos.



          Gruss Olli4
          Zuletzt geändert von Olli4; 01.05.2008, 13:25.

          Kommentar


          • #6
            Original geschrieben von Olli4

            EDIT: Wenn ich die Datei mit fopen direkt öffne also nicht über die url sondern einfach ./datei.php gehts und e_all gibt keine fehler aus von diesem code. wenn ich es aber via URL aufrufe (Muss ich leider so haben) gehts nicht.
            Ähm, der code ist auf deinem Server, warum in Gottesnamen musst du über http öffnen

            Zu deinen Fehler, es könnte an dem Timeout liegen.

            Kommentar


            • #7
              Original geschrieben von asp2php
              Ähm, der code ist auf deinem Server, warum in Gottesnamen musst du über http öffnen

              Zu deinen Fehler, es könnte an dem Timeout liegen.
              Hi

              Also:
              1. Timeout: Ja an dem liegt es. Er bricht das Laden ab. Jedoch warum. Das ist das was ich gerne verstehen würde. Wenn ich es vom localen WEbserver verwende (das fopen auf den Server Online) geht es. Aber wenn ich es auf dem Webserver habe nicht.

              2. Hast du inrirekt recht. Wenn ich einige dinge ändern würde könnte ich es anders machen, was ich aber ungerne tun. Mache es aber wenn es keine Lösung gibt.

              Aber es muss doch gehen wenn allow_url_fopen wie du sagst auf ON ist. Kann ja nicht mal http://www.domain.tld/textdatei.txt machen und er bricht ab mit einem Timeout. Aber wie gesagt nur direkt auf dem Server. Wenn ich es vom lokalhost mit fopen auf http://www.domain.tld/textdatei.txt mache gehts und wenn ich es vom Webspace mit fopen auf http://www.domain.tld/textdatei.txt kommt die seite kann nicht angezeigt werden nach ner weile laden.

              Das muss doch ein Grund haben.

              Danke für deine Hilfe.

              Gruss

              Olli4

              Kommentar


              • #8
                Ich hoffe, du hast die Regeln richtig gelesen und die @-Zeichen vor den Funktionsaufrufen entfernt. Eigentlich solltest du Fehlermeldungen erhalten!

                Kommentar


                • #9
                  Original geschrieben von PHP-Desaster
                  Ich hoffe, du hast die Regeln richtig gelesen und die @-Zeichen vor den Funktionsaufrufen entfernt. Eigentlich solltest du Fehlermeldungen erhalten!
                  Hi

                  Danke aber habe ich ja. Wie oben geschrieben:
                  Ich habe drei Server:
                  server1
                  server2
                  server3.
                  Die Datei dateiauslese.php liegt immer auf server1. Bei jedem test.
                  Ich habe die Datei test.php mal so angelegt:
                  PHP-Code:
                  error_reporting(E_ALL); 
                  ini_set("display_errors"ON);
                  $TestAusl fopen ("http://www.domainl.tld/dateiauslese.php""r"); 
                  Nun zu den fehlern:
                  server1: er läd bis er abbricht und der Fehler kommt Seite kann nicht angezeigt werden

                  server2: Problemloser ablauf.

                  server3: Problemloser ablauf.

                  Der einzige fehler den er bei 2 und 3 ausgibt ist wegen der Zeile ini_set das das ON in 'ON' geändert werden sollte oder sowas.

                  Also du siehst er gibt kein fehler zu dem aus weil alles funktioniert wie es soll. Nur direkt vom einen Server geht es nicht. Dort läd er sich dumm und dämlich. Und genau das ist ja das seltsame. Nur beim einen Hoster.

                  Gruss

                  Olli4
                  Zuletzt geändert von Olli4; 01.05.2008, 14:38.

                  Kommentar


                  • #10
                    Wurde ja eigentlich schon besprochen, dass es unsinnig ist, eine "Datei" über HTTP zu holen, wenn Sie auf dem eigenen selben Server/Webspace liegt.

                    Du kannst mal folgende Alternativen ausprobieren: fsockopen, file_get_contents, curl, ... (Reihenfolge ohne Wertung)

                    Außerdem probier doch mal aus, was passiert, wenn du eine dateiauslese.php (mit beliebigen Inhalt) auf server2 oder 3 liegen hast und dann von server1 abrufst.

                    Wenn das alles keinen Sinn hat, poste doch mal die URL zu der dateiauslese.php

                    Kommentar


                    • #11
                      Original geschrieben von TobiaZ
                      Wurde ja eigentlich schon besprochen, dass es unsinnig ist, eine "Datei" über HTTP zu holen, wenn Sie auf dem eigenen selben Server/Webspace liegt.

                      Du kannst mal folgende Alternativen ausprobieren: fsockopen, file_get_contents, curl, ... (Reihenfolge ohne Wertung)

                      Außerdem probier doch mal aus, was passiert, wenn du eine dateiauslese.php (mit beliebigen Inhalt) auf server2 oder 3 liegen hast und dann von server1 abrufst.

                      Wenn das alles keinen Sinn hat, poste doch mal die URL zu der dateiauslese.php
                      Hallo

                      Danke für deine Antwort. Habe die PHP Datei gegen eine textdatei geändert test.txt, damit ich fehler in der Datei dateuauslese.php ausschliessen kann.

                      Das es schwachsinn ist aufzurufen mag sein kann es direkt verarbeiten. ich kann ja keine php datei mit fopen aufrufen mit ./dateiauslese.php da er sonst nur den quellcode ausgibt und nicht das was er darin verarbeitet.

                      Mit der Datei test.txt passiert das selbe. Wenn ich dies aufrufe und die Datei test.txt auf einem anderen Server habe geht es probemlos.

                      Das heisst es gibt nur probleme mit fopen auf dem selben server gleiche IP (subdomains etc gehen auch nicht) das scheint irgend ein Problem sein das beim Hoster ist. Denke das wäre falsch jetzt noch bei PHP zu suchen wenn es auch mit txt nicht geht und mit diesem kleinen code oder?

                      Werde es denke ich ändern. Wäre einfach Interessant herauszufinden warum es so ist. Habe mal den Hoste rangeschrieben ob es irgend eine einschränkung mit fopen gibt.

                      Gruss

                      Olli4

                      Kommentar


                      • #12
                        file_get_contents probiert? Kann dein Server überhaupt Domainnamen auflösen? Will die Datei evtl. einen ordentlichen User-Agent? Warum nimmst du nicht cURL für sowas, wie es sich gehört? Wieso unterdrückst du Fehlermeldungen und heulst dann rum, dass keine Fehler kommen?

                        Und ich hab noch so viele Fragen, die du dir eigentlich hättest vorher selber stellen müssen!
                        [FONT="Helvetica"]twitter.com/unset[/FONT]

                        Shitstorm Podcast – Wöchentliches Auskotzen

                        Kommentar


                        • #13
                          Original geschrieben von unset
                          file_get_contents probiert? Kann dein Server überhaupt Domainnamen auflösen? Will die Datei evtl. einen ordentlichen User-Agent? Warum nimmst du nicht cURL für sowas, wie es sich gehört? Wieso unterdrückst du Fehlermeldungen und heulst dann rum, dass keine Fehler kommen?

                          Und ich hab noch so viele Fragen, die du dir eigentlich hättest vorher selber stellen müssen!
                          Habe ich Probiert. Wie gesagt nur mit fopen gibt es das Problem. Es ist mir auch möglich abzuändern wo ich auch ahbe. mich nimmt es einzig und alleine noch wunder warum es nicht geht mit fopen. Warum er sobald eine URL angegeben ist endlos läd.

                          Fehlermeldungen werden unterdrückt? Was gibt es denn mehr als
                          error_reporting(E_ALL);
                          ini_set("display_errors", ON);
                          mehr ist mir nicht bekannt sorry.

                          Ob er Domainnamen auflösen kann weiss ich nichit genau. Wie kann ich das sehen?

                          Danke schonmal.

                          Gruss

                          Olli

                          Kommentar


                          • #14
                            Original geschrieben von Olli4

                            Fehlermeldungen werden unterdrückt? Was gibt es denn mehr als
                            error_reporting(E_ALL);
                            ini_set("display_errors", ON);
                            mehr ist mir nicht bekannt sorry.
                            Er meint die @-zeichen in deinem Ausgangscode.
                            Wenn du diese wegnimmst, dann wäre es sinnvoller, nochmals deinen Code zu posten, weil sich die Ausgangsbedingungen geändert haben

                            mfg

                            Kommentar


                            • #15
                              Original geschrieben von Blackgreetz
                              Er meint die @-zeichen in deinem Ausgangscode.
                              Wenn du diese wegnimmst, dann wäre es sinnvoller, nochmals deinen Code zu posten, weil sich die Ausgangsbedingungen geändert haben

                              mfg
                              Hi

                              Ach so danke. Mein Code den ich zum testen habe ist nur dieser:
                              PHP-Code:
                              error_reporting(E_ALL); 
                              ini_set("display_errors"ON);
                              $TestAusl fopen ("http://www.server1.tld/test.txt""r"); 
                              Nochmals zum erklären mit 2 servern. server1 und server2, wobei server1 der ist wo probleme macht
                              Wenn ich den obengenannten Code auf server 1 ausführe, läd er endlos und bricht ab.
                              Wenn ich diesen Code auf Server 2 ausführe geht es Problemlos ausser eben wegen dem ON in ini_set.

                              Wenn ich jedoch die Datei test.txt auf server2 packe, geht es von beiden servern.

                              Wie gesagt ich kann es nun auch ändern das es für mich klappt. Es Interessiert mich einfach warum dies so ist um es eventuell besser verstehen zu können.

                              Gruss

                              Olli4

                              Kommentar

                              Lädt...
                              X