PHP und Dateien >2GB

Dieses Thema: "PHP und Dateien >2GB" im Forum "Ruby, php, Perl, Python ..." wurde erstellt von theton, 08.11.2005.

  1. theton

    theton Bitmuncher

    Dabei seit:
    27.05.2004
    Beiträge:
    4.820
    Zustimmungen:
    0
    Ort:
    Berlin, Germany
    Kann mir irgendwer erklaeren, wie ich PHP dazu bringe, dass es Dateien mit mehr als 2GB erzeugen kann? Ich versuche einen access_log vom Apache zu parsen (im Laufe von 4 Jahren, haben sich da 3.2GB angesammelt), die Referer-Eintraege zu entfernen und das Ergebnis in eine neue Datei zu schreiben. Sobald die neue Datei 2GB erreicht hat, bekomme ich aber die Meldung "file size limit exceeded".
    Es liegt garantiert nicht am Dateisystem, denn auf der gleichen Partition liegt bereits die 3.2GB grosse access_log, diese Fehlerquelle kann man also schonmal ausschliessen. Es muss also irgendwas mit PHP zu tun haben. Muss ich beim Kompilieren irgendeine bestimmte Option fuer configure angeben? Oder muss ich irgendein CFLAG setzen? Bin echt ratlos. :think:
     
  2. Anzeige

    Schau dir mal diesen Ratgeber an. Viele Antworten inkl. passender Shell-Befehle!
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 ninguno, 08.11.2005
    ninguno

    ninguno Tripel-As

    Dabei seit:
    13.05.2005
    Beiträge:
    162
    Zustimmungen:
    0
    was gibt denn ulimit aus:
    Code:
    ulimit -a
     
  4. theton

    theton Bitmuncher

    Dabei seit:
    27.05.2004
    Beiträge:
    4.820
    Zustimmungen:
    0
    Ort:
    Berlin, Germany
    Hier der Output von ulimit -a

    Code:
    core file size        (blocks, -c) 0
    data seg size         (kbytes, -d) unlimited
    file size             (blocks, -f) unlimited
    max locked memory     (kbytes, -l) 32
    max memory size       (kbytes, -m) unlimited
    open files                    (-n) 1024
    pipe size          (512 bytes, -p) 8
    stack size            (kbytes, -s) unlimited
    cpu time             (seconds, -t) unlimited
    max user processes            (-u) 3967
    virtual memory        (kbytes, -v) unlimited
    
     
  5. #4 ninguno, 08.11.2005
    ninguno

    ninguno Tripel-As

    Dabei seit:
    13.05.2005
    Beiträge:
    162
    Zustimmungen:
    0
    das ulimit -a hast du auch mit dem user abgesetzt unter dem php läuft?
     
  6. theton

    theton Bitmuncher

    Dabei seit:
    27.05.2004
    Beiträge:
    4.820
    Zustimmungen:
    0
    Ort:
    Berlin, Germany
    Ja... Ich administriere jetzt seit einigen Jahren Linux- und Unix-Server. :) Hab halt nur bisher wenig mit PHP zu tun gehabt. Es liegt garantiert nicht an irgendwelchen Einschraenkungen des Systems. Habe da schon alles moegliche durchgeschaut (Sicherheitsrichtlinien, Beschraenkungen im Kernel u.ae.). Das Script fuehre ich als root aus. Es wird nicht aus dem Webserver gestartet, von daher sind Limitierungen fuer irgendwelche User keine moegliche Fehlerquelle.
     
  7. #6 Wolfgang, 08.11.2005
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Passiert dir das nur unter php?
    Was passiert, wenn du z.b. mit dd oder perl eine Datei größer 2GB im gleichen F-System erzeugst?
    Eventuell ist da ja kein Platz mehr?
    Teste das mal aus.

    Beim Apache ist mir nur in Erinnerung, dass es in der alten Version mal eine Beschränkung von 2GB beim Download gab.
    Aber das hat damit wohl eher nix zu tun.

    Gruß Wolfgang
    Der mit php nicht so viel am Hut hat!
     
  8. #7 theton, 08.11.2005
    Zuletzt bearbeitet: 08.11.2005
    theton

    theton Bitmuncher

    Dabei seit:
    27.05.2004
    Beiträge:
    4.820
    Zustimmungen:
    0
    Ort:
    Berlin, Germany
    Es hat nix mit Apache zu tun (wie ich bereits erwaehnte, starte ich das Script als root auf der Konsole) und auf der Partition sind noch mehr als 200GB Platz. Auch der verfuegbare RAM kann es nicht sein, der Server hat 4GB davon. Das Problem taucht bei dd nicht auf, denn (auch das schrieb ich bereits) auf der gleichen Partition liegt eine Datei mit 3.2GB (genau die, die ich parsen will).
     
  9. devilz

    devilz Pro*phet
    Administrator

    Dabei seit:
    01.05.2002
    Beiträge:
    12.244
    Zustimmungen:
    0
    Ort:
    Hessen
    Du könntest mal deine php config posten ...
     
  10. #9 ninguno, 08.11.2005
    ninguno

    ninguno Tripel-As

    Dabei seit:
    13.05.2005
    Beiträge:
    162
    Zustimmungen:
    0
    diese 3.2 gb datei wurde auch mit root erstellt oder mit einem anderen user? wenns ein anderer war, würd ich schon sagen versuch mal mit root eine datei >2gb anzulegen, wie gesagt dd eignet sich gut dafür
     
  11. keanuf

    keanuf Jungspund

    Dabei seit:
    31.10.2005
    Beiträge:
    16
    Zustimmungen:
    0
    Hallo hier ist was ich bei php.net gefunden habe
    Code:
    If you want to open large files (more than 2GB) 
    that's what I did and it works: 
    you should recompile your php 
    with the CFLAGS="-D_FILE_OFFSET_BITS=64" ./configure etc... 
    This tells to your compiler 
    (I tested only gcc on PHP-4.3.4 binary on Linux and Solaris) 
    to make the PHP parser binary large file aware. 
    This way fopen() will not give you the 
    "Value too large for defined data type" 
    error message.
    God bless PHP
    ciao
    Sergio Paternoster
    
    hier noch der Link dazu
    http://de.php.net/fopen()

    Fehlermeldung trifft nicht hunderprozentig zu aber eventuell mal ein Ansatz.

    Viel Glück
     
  12. #11 Sir Auron, 08.11.2005
    Sir Auron

    Sir Auron Routinier

    Dabei seit:
    26.04.2004
    Beiträge:
    482
    Zustimmungen:
    0
    Also C müsste eigentlich kein Problem mit 3.2G haben machmal ne mmap in den Memory und perform dann deine regexes. Sollte auch schneller gehen, als PHP.
     
  13. #12 MrFenix, 08.11.2005
    MrFenix

    MrFenix Executor

    Dabei seit:
    16.10.2004
    Beiträge:
    480
    Zustimmungen:
    0
    Ort:
    Siegen, NRW
    Ist auch nicht mal schwer den C Kram nachher in Apache einzubinden, dass man zum Beispiel was übers Inet auslesen kann.
    Wenn Intresse besteht schau ich mal ob ich noch meine alten Experimente mit nem kleinen hallo welt apache plugin finde oder wie das in php mit der pipe zu ausführbaren Programmen ging (hab nur grade keine Lust meinen alten server (200er P1) hochzufahrn ^^).
     
  14. theton

    theton Bitmuncher

    Dabei seit:
    27.05.2004
    Beiträge:
    4.820
    Zustimmungen:
    0
    Ort:
    Berlin, Germany
    Also das CFLAG beim Kompilieren zu setzen habe ich jetzt mal versucht. Danach hatte aber der Webserver (der ja schliesslich auch das gleiche PHP nutzt) Probleme und gab nur noch leere html-Gerueste zurueck, verarbeitete also PHP-Code offensichtlich nicht mehr richtig bzw. ignoriert jegliches echo() und print().
    Den Spass mit C zu parsen ist fuer mich nichtmal ne Ueberlegung wert, denn ich denke, dass C fuer diese Aufgabe total ungeeignet ist. Evtl. will ich das Skript spaeter noch im Apache benutzen, auch wenn das momentan noch nicht geplant ist. Und wer schonmal nen Parser in C geschrieben hat, der weiss, dass das "mit Kanonen auf Spatzen schiessen" waere.
    Alle Dateien, mit denen ich gerade arbeite (sowohl die access_log als auch das Skript selbst) habe ich als root angelegt bzw. als root von einem anderen Server gezogen. Ich kann nur nochmal wiederholen, ich bin zu 99,9% sicher, dass es nicht am Dateisystem oder irgendwelche Einschraenkungen durch das OS liegt. Es ist ueberhaupt kein Problem irgendwelche Dateien >2GB anzulegen, egal mit welchem User, habe ich alles schon ueberprueft. Und ich wuerde nicht in diesem Forums-Bereich schreiben, wenn ich nicht davon ausgehen wuerde, dass es am PHP liegt.
    Das mit dem CFLAG war ne Hoffnung, aber wenn PHP dann keinen Output mehr produziert (und offenbar jedes print und echo ignoriert) bringt es mich leider nicht weiter. :(
     
  15. devilz

    devilz Pro*phet
    Administrator

    Dabei seit:
    01.05.2002
    Beiträge:
    12.244
    Zustimmungen:
    0
    Ort:
    Hessen
    Ich warte immernoch auf deine php config ... aber anyway ..
     
  16. #15 MrFenix, 09.11.2005
    MrFenix

    MrFenix Executor

    Dabei seit:
    16.10.2004
    Beiträge:
    480
    Zustimmungen:
    0
    Ort:
    Siegen, NRW
    Wird das PHP Script denn dann noch ausgeführt oder werden nur print und echo ignoriert? Klingt nämlich dannach als wär irgendwas bei der Install vom neu compilierten Php schief gelaufen.
     
Thema:

PHP und Dateien >2GB

Die Seite wird geladen...

PHP und Dateien >2GB - Ähnliche Themen

  1. Benötige Hilfe- Dateien vergleichen

    Benötige Hilfe- Dateien vergleichen: Hallo, für eine Arbeit an der Uni muss ich einige viele Bilder miteinander vergleichen, was ich gerne durch eine Automatisierung etwas...
  2. Amarok streikt bei *.m4a Dateien

    Amarok streikt bei *.m4a Dateien: Hallo zusammen, vor Kurzem habe ich einen neuen Rechner zusammengebaut und mit OpenSuse 13.2 aufgesetzt. Nun musste ich aber feststellen, dass...
  3. Zertifikatsdateien

    Zertifikatsdateien: Hallöchen und einen schönen Abend! Ich habe zurzeit folgendes Problem. Ich habe eine SSL Wildcard für subdomain (als Beispiel *.example.com). Ich...
  4. Ärger um binäre Dateien in Chromium

    Ärger um binäre Dateien in Chromium: Wie einer kürzlich veröffentlichten Untersuchung eines Entwicklers entnommen werden kann, lädt der freie Chromium-Browser im Hintergrund unfreie,...
  5. Neue Intel-Grafikprozessoren nutzen proprietäre Firmware-Dateien

    Neue Intel-Grafikprozessoren nutzen proprietäre Firmware-Dateien: Ein neulich getätigter Beitrag zum Linux-Kernel zeigt, dass einige der neueren i915-Grafikprozessoren nun erstmals auf Firmware angewiesen sind,...