Fred bzw. file_get_contents kommt nicht zurück

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

  • Fred bzw. file_get_contents kommt nicht zurück

    Hallo liebe Gemeinde:
    Ich habe folgendes Problem:
    Ich habe bei Strato eine Home Page. Da kann ich Dateien von meinem Rechner runter laden und in eine Datenbank schieben. Das funktioniert plötzlich nicht mehr.
    Auf meinem Rechner zu Hause habe xampp und da funktioniert es noch.
    Hier ein kleiner Einblick in den code.

    PHP-Code:
    if ($_FILES['datei']['error'] == UPLOAD_ERR_NO_FILE || $_FILES['datei']['error'] == UPLOAD_ERR_PARTIAL) {
    die(
    "Die Datei wurde nicht korrekt hochgeladen. Bitte versuchen Sie es erneut.");

    } elseif (
    $_FILES['datei']['error'] == UPLOAD_ERR_FORM_SIZE || $_FILES['datei']['error'] == UPLOAD_ERR_INI_SIZE) {
    die(
    "Die hochgeladene Datei ist zu groß.");
    }
    else
    {

    move_uploaded_file($_FILES['datei']['tmp_name'], $uploaddir .basename($_FILES['datei']['name']));


    $datei = ($uploaddir .basename($_FILES['datei']['name']));
    chmod($datei0644);
    echo 
    "<br>";
    if ( 
    file_exists $datei ) )
    {
      echo 
    'Die Datei ' $datei ' ist existent';
    }
    else
    {
      echo 
    'Die Datei ' $datei ' ist nicht existent';
    }
    echo 
    "<br>";

    if ( 
    is_readable $datei ) )
     {
       echo 
    "Die Datei $datei existiert und ist lesbar";
     }
     else
     {
       echo 
    "Die Datei $datei existiert nicht und ist nicht lesbar";
     }

    $size = ($_FILES['datei']['size']);
    $data '';
    echo 
    "vor lesen";
    $data file_get_contents($datei); 
    echo 
    "nach lesen"
    Alles funktioniert bis auf die Tatsache, das sich das Programm aus file_get_contents nicht zurück meldet.
    Ich bekomme die Nachricht, das die Datei existiert und lesbar ist.

  • #2
    Wenn file_get_contents() Sorgen hat, wirft es in der Regel eine Meldung.
    Du solltest also das error_reporting mal aktivieren oder in die Logs schauen.
    Wir werden alle sterben

    Kommentar


    • #3
      Hallo Combie
      ja Du hast recht. Ich habe es gemacht und bekomme dann folgenden Fehler

      Fatal error: Out of memory (allocated 262144) (tried to allocate 434702 bytes) in /mnt/webi/d0/29/52480829/htdocs....

      Ich denke das da was in der php.ini verändert werden müsste. Weis aber nicht was. Auf meinem Rechner funktioniert es ja auch. Da habe ich die Version 5.2.
      Und auf Strato ist die Version 5.6.2 Hast Du einen Tip welchen Wert ich erhöhen muß?
      Würdr Dich in mein Abendgebet einschliessen.
      Danke im voraus.

      Kommentar


      • #4
        memory_limit
        PHP: Description of core php.ini directives - Manual
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Hallo wahsaga
          ich habe das getan habe memory_limit
          PHP-Code:
          ini_set('memory_limit''128M'); 
          wie oben gesetzt innerhalb des programmes. Ich komme ja nicht an die PHP.ini von Strato ran. Hat aber keine Veränderung gebracht.
          Danke für Deinen Einsatz.

          Kommentar


          • #6
            Dann kannst du wohl nur auf ein anderes Hosting-Paket umsteigen oder einen anderen Hoster nehmen.

            Oder du überlegst dir, ob es wirklich erforderlich ist größere Datenmengen in den Speicher zu laden.

            Kommentar


            • #7
              Strato erlaubt eigene php.ini Dateien.
              Wir werden alle sterben

              Kommentar


              • #8
                Ja Du hast natürlich Recht. Ich weis es inzwischen.
                Ich habe die PHP.ini mit der auf meinem Rechner verglichen was man so vergleichen kann. Ich bin mir sicher, dass es nicht am memory_limit liegt der ist 256 M groß. Es hat ja auch vor PHP 5.6.2 funktioniert.
                Ist irgendwas von einem Bug in dieser Version bekannt.
                Die Dateien die ich mit fread bzw. file_get_contents reinziehe sind doch gar nicht so groß.
                Hatte extra mal eine ganz kleine Datei genommen 1010Bytes das hat auch funktioniert. Ich weis einfach keinen Punkt wo ich noch was suchen könnte.
                Das einzige was möglicherweise etwas Licht ins Dunkle bringen könnte ist die PHP Version zu tauschen. Oder hast Du noch eine andere Idee?

                Kommentar


                • #9
                  Ich bin mir sicher, dass es nicht am memory_limit liegt der ist 256 M groß.
                  Laut Fehlermeldung eher 256 kilobyte ....
                  phpinfo() verschafft Klarheit
                  Wir werden alle sterben

                  Kommentar


                  • #10
                    Nein es sind wirklich 256 M
                    memory_limit 256M ist so in der Php.ini eingetragen.

                    Kommentar


                    • #11
                      Was sagt
                      PHP-Code:
                      var_dump(
                          
                      ini_get('memory_limit'),
                          
                      memory_get_usage(true)
                      ); 
                      kurz vor der Zeile, wo der Fehler auftritt?

                      Kommentar


                      • #12
                        Zitat von Volker1 Beitrag anzeigen
                        Hallo Combie
                        ja Du hast recht. Ich habe es gemacht und bekomme dann folgenden Fehler

                        Fatal error: Out of memory (allocated 262144) (tried to allocate 434702 bytes) in /mnt/webi/d0/29/52480829/htdocs....
                        Du kleiner Scherzbold hast das wichtigste an der Fehlermeldung weggelassen: Die Zeilennummer.

                        Das einzige "speicherfressende" an dem von dir geposteten Quelltext ist das
                        PHP-Code:
                        $data file_get_contents($datei); 
                        Wenn das Script wirklich exakt dort scheitert, dann kann nur eine zu große Datei dran schuld sein. Das widerspricht allerdings deinen weiteren Angaben.

                        memory_limit 256M ist so in der Php.ini eingetragen.
                        Mag sein, aber in welcher? Phpinfo() sagt dir, welche php.ini dein Script auswertet. Wieviel davon genutzt wird, sagt dir memory_get_usage().

                        Probeweise kannst du auch die Datei in kleineren Häppchen einlesen:

                        PHP-Code:
                        // $data = file_get_contents($datei);

                        $stream fopen($datei'rb');
                        while (!
                        feof($stream)) {
                            
                        // einlesen und gleich wegwerfen
                            
                        fread($stream8192);
                        }
                        fclose($stream);
                        $data '***blubb***';

                        // ab hier weiter im alten Quelltext
                        echo 'nach lesen'
                        Schlägt das auch mit einer Speicherwarnung fehl, liegts nicht an file_get_contents() in Verbindung mit zu großen Dateien.
                        Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

                        Kommentar


                        • #13
                          Ich lasse mal diesen Link da, weil das Problem recht ähnlich klingt: Aus dem Rechenzentrum Blogarchiv Schreibmaschine mit memory_limit

                          tl;dr: Wenn du die php.ini auf einem Windows-Rechner editierst und dabei \r\n-Zeilenumbrüche produzierst, wird ein Wert wie "256M" unter Umständen auf einem Linux-System als "256M\r" ausgelesen, was der Parser nicht versteht und deshalb den Default-Wert von 256K setzt/beibehält.

                          Kommentar

                          Lädt...
                          X