Probleme mit Dateien über 2 GB

Irgendwelche Probleme mit XAMPP für Linux? Dann ist hier genau der richtige Ort um nachzufragen.

Probleme mit Dateien über 2 GB

Postby esfaueen » 08. September 2008 15:26

Hallo miteinander,

ich hätte kurz eine Frage, und zwar kann ich Dateien welche über 2 GB sind nicht heruntergeladen, nun hab ich gelesen, dass ich php neu kompilieren, etc muss. Nur bin ich mir nicht ganz sicher wie ich das machen soll bei einem bestehenden System.

Kann mir da einer weiterhelfen?!

Vielen Dank schonmal & Gruss
esfaueen
 
Posts: 22
Joined: 08. September 2008 15:22

Postby glitzi85 » 08. September 2008 16:44

Hmm, hab das noch nie gehört, aber was hat die Dateigröße mit PHP zu tun? Lieferst du die Dateien denn über PHP aus?

Mir würden so auf die schnelle aber auch keine Configure-Options einfallen die da in Frage kommen und ein grep nach large brachte auch nix zustande. Wo hast du das denn gelesen?

mfg glitzi
User avatar
glitzi85
 
Posts: 1920
Joined: 05. March 2004 23:26
Location: Dahoim

Postby Wiedmann » 08. September 2008 17:28

Mir würden so auf die schnelle aber auch keine Configure-Options einfallen die da in Frage kommen

http://de.php.net/manual/en/intro.filesystem.php
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby glitzi85 » 08. September 2008 18:03

Wiedmann wrote:
Mir würden so auf die schnelle aber auch keine Configure-Options einfallen die da in Frage kommen

http://de.php.net/manual/en/intro.filesystem.php

Zu meiner Verteidigung sei gesagt, dass das keine configure-Option ist ;-)
User avatar
glitzi85
 
Posts: 1920
Joined: 05. March 2004 23:26
Location: Dahoim

Postby esfaueen » 09. September 2008 08:24

Das momentane Script sieht folgendermassen aus:

Code: Select all
$filesize = exec ('stat -c %s '. escapeshellarg (/folder1/datei2.iso);

header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"datei2.iso\"");
header("Pragma: public");
header("Content-Length:".$filesize);
header("Content-Transfer-Encoding: binary");
header("Cache-Control: maxage=1");
   
readfile(/folder1/datei2.iso); 


Wenn ich nun eine Datei welche 1 GB gross ist herunterlade, so ist dies kein Problem. Ist die Datei aber über 2 GB gross so werden nur etwa 200 Bytes übertragen, und wenn ich das File dann öffne, steht da folgendes drin:

Code: Select all
<br />
<b>Warning</b>:  readfile(/folder1/datei2.iso) [<a href='function.readfile'>function.readfile</a>]: failed to open stream: File too large in <b>/opt/lampp/htdocs/xampp/download.php</b> on line <b>63</b><br />


Nun habe ich gelesen dass PHP mit folgenden 2 Parametern kompiliert werden muss:

Dann musst Du PHP mit D_LARGEFILE_SOURCE und D_FILE_OFFSET_BITS=64 (IIRC) in den CFLAGS übersetzen


Nur, wie kann ich das bei dem schon kompilierten PHP machen?!

Vielen Dank schonmal für eure Hilfe :)
esfaueen
 
Posts: 22
Joined: 08. September 2008 15:22

Postby glitzi85 » 09. September 2008 08:36

Also generell geht das so wie hier beschrieben:

http://www.php.net/manual/en/install.unix.apache2.php

Schritt 9 müsste dann aber so aussehen:

Code: Select all
export CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
./configure [...]


Den Configure-Befehl kannst aus der Ausgabe von phpinfo entnehmen, ganz oben steht der verwendete Befehl drin.

mfg glitzi
User avatar
glitzi85
 
Posts: 1920
Joined: 05. March 2004 23:26
Location: Dahoim

Postby esfaueen » 09. September 2008 10:19

Hm, ok habe nun PHP neu kompiliert und installiert mit folgendem Befehl:

export CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
./configure --prefix=/opt/lampp --with-apxs2=/opt/lampp/bin/apxs --with-config-file-path=/opt/lampp/etc --with-mysql=/opt/lampp --enable-inline-optimization --disable-debug --enable-bcmath --enable-calendar --enable-ctype --enable-dbase --enable-discard-path --enable-exif --enable-filepro --enable-force-cgi-redirect --enable-ftp --enable-gd-imgstrttf --enable-gd-native-ttf --with-ttf --enable-magic-quotes --enable-memory-limit --enable-shmop --enable-sigchild --enable-sysvsem --enable-sysvshm --enable-track-vars --enable-trans-sid --enable-wddx --enable-yp --with-ftp --with-gdbm=/opt/lampp --with-jpeg-dir=/opt/lampp --with-png-dir=/opt/lampp --with-freetype-dir=/opt/lampp --without-xpm --with-zlib=yes --with-zlib-dir=/opt/lampp --with-openssl=/opt/lampp --with-expat-dir=/opt/lampp --enable-xslt=/opt/lampp --with-xsl=/opt/lampp --with-dom=/opt/lampp --with-ldap=/opt/lampp --with-ncurses=/opt/lampp --with-gd --with-imap-dir=/opt/lampp --with-imap-ssl --with-imap=/opt/lampp --with-gettext=/opt/lampp --with-mssql=/opt/lampp --with-sybase=/opt/lampp --with-mysql-sock=/opt/lampp/var/mysql/mysql.sock --with-mcrypt=/opt/lampp --with-mhash=/opt/lampp --enable-sockets --enable-mbstring=all --with-curl=/opt/lampp --enable-mbregex --enable-zend-multibyte --enable-exif --with-bz2=/usr/lib --with-sqlite=shared,/opt/lampp --with-libxml-dir=/opt/lampp --enable-soap --enable-pcntl --with-mysqli=/opt/lampp/bin/mysql_config --with-mime-magic --with-iconv --enable-dio --with-pdo-mysql=/opt/lampp --with-pdo-sqlite --with-ming=shared,/opt/lampp

Habe Oracle/Interbase/SQLPostgre rausgenommen, da sie beim kompilieren Probleme machten. Nun habe ich den Apache Server neu gestartet und nun funktioniert nichts mehr, beim aufrufen der Seite kommt nur eine weisse Seite und das error_log zeigt folgende Einträge:

[Tue Sep 09 10:45:36 2008] [notice] child pid 13786 exit signal Segmentation fault (11)
[Tue Sep 09 10:45:36 2008] [notice] child pid 13785 exit signal Segmentation fault (11)
[Tue Sep 09 10:45:36 2008] [notice] child pid 13784 exit signal Segmentation fault (11)
[Tue Sep 09 10:45:37 2008] [notice] child pid 13794 exit signal Segmentation fault (11)
[Tue Sep 09 10:45:37 2008] [notice] child pid 13793 exit signal Segmentation fault (11)
[Tue Sep 09 10:45:37 2008] [notice] child pid 13792 exit signal Segmentation fault (11)
[Tue Sep 09 10:45:37 2008] [notice] child pid 13791 exit signal Segmentation fault (11)
[Tue Sep 09 10:45:37 2008] [notice] child pid 13790 exit signal Segmentation fault (11)
[Tue Sep 09 10:45:37 2008] [notice] child pid 13789 exit signal Segmentation fault (11)
[Tue Sep 09 10:45:38 2008] [notice] child pid 13797 exit signal Segmentation fault (11)
[Tue Sep 09 10:45:38 2008] [notice] child pid 13796 exit signal Segmentation fault (11)
[Tue Sep 09 10:45:38 2008] [notice] child pid 13795 exit signal Segmentation fault (11)
[Tue Sep 09 10:45:42 2008] [notice] child pid 13802 exit signal Segmentation fault (11)
[Tue Sep 09 10:45:46 2008] [notice] child pid 13805 exit signal Segmentation fault (11)
[Tue Sep 09 10:45:46 2008] [notice] child pid 13804 exit signal Segmentation fault (11)
[Tue Sep 09 10:45:47 2008] [notice] child pid 13806 exit signal Segmentation fault (11)
[Tue Sep 09 10:45:48 2008] [notice] child pid 13807 exit signal Segmentation fault (11)
[Tue Sep 09 10:45:50 2008] [notice] child pid 13808 exit signal Segmentation fault (11)
[Tue Sep 09 10:45:55 2008] [notice] child pid 13810 exit signal Segmentation fault (11)
[Tue Sep 09 10:45:55 2008] [notice] child pid 13809 exit signal Segmentation fault (11)
[Tue Sep 09 10:45:57 2008] [notice] child pid 13811 exit signal Segmentation fault (11)
[Tue Sep 09 10:47:46 2008] [notice] child pid 13813 exit signal Segmentation fault (11)
[Tue Sep 09 10:47:46 2008] [notice] child pid 13812 exit signal Segmentation fault (11)
[Tue Sep 09 10:47:47 2008] [notice] child pid 29605 exit signal Segmentation fault (11)
[Tue Sep 09 10:47:47 2008] [notice] child pid 13816 exit signal Segmentation fault (11)
[Tue Sep 09 10:47:47 2008] [notice] child pid 13815 exit signal Segmentation fault (11)
[Tue Sep 09 10:47:47 2008] [notice] child pid 13814 exit signal Segmentation fault (11)
[Tue Sep 09 10:47:48 2008] [notice] child pid 30085 exit signal Segmentation fault (11)
[Tue Sep 09 10:50:11 2008] [notice] child pid 30088 exit signal Segmentation fault (11)
[Tue Sep 09 10:50:12 2008] [notice] child pid 17564 exit signal Segmentation fault (11)
[Tue Sep 09 10:50:12 2008] [notice] child pid 30681 exit signal Segmentation fault (11)
[Tue Sep 09 10:50:12 2008] [notice] child pid 30680 exit signal Segmentation fault (11)
[Tue Sep 09 10:50:12 2008] [notice] child pid 30679 exit signal Segmentation fault (11)
[Tue Sep 09 10:50:12 2008] [notice] child pid 30678 exit signal Segmentation fault (11)
[Tue Sep 09 10:50:13 2008] [notice] child pid 18005 exit signal Segmentation fault (11)
[Tue Sep 09 10:50:14 2008] [notice] child pid 18337 exit signal Segmentation fault (11)
[Tue Sep 09 10:50:14 2008] [notice] child pid 18006 exit signal Segmentation fault (11)


Wo liegt nun der Fehler?! .... komm grad garnicht klar
esfaueen
 
Posts: 22
Joined: 08. September 2008 15:22

Postby Wiedmann » 09. September 2008 10:32

IMHO muss dann auch der Apache so komiliert sein.

Du kannst ja mal schauen, ob das PHP-CLI korrelt läuft (abstürzen tut ja das PHP Apache-Modul).
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby esfaueen » 09. September 2008 10:37

Hm, ok bringt folgende Ausgabe:

PHP Warning: PHP Startup: Unable to load dynamic library '/opt/lampp/lib/php/extensions/no-debug-non-zts-20060613/pgsql.so' - libpq.so.4: cannot open shared object file: No such file or directory in Unknown on line 0
Hello world of PHP CLI!


Scheint aber zu funktionieren! (gibt ja "Hello world of PHP CLI!" aus)

Script:

Code: Select all
#!/opt/lampp/bin/php -q
<?php echo "Hello world of PHP CLI!"; ?>
esfaueen
 
Posts: 22
Joined: 08. September 2008 15:22

Postby Wiedmann » 09. September 2008 10:48

Scheint aber zu funktionieren!

Zumindest bis auf die pqsql Extension. Die solltest du also in der "php.ini" deaktivieren (oder neu kompilieren).
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby esfaueen » 09. September 2008 10:52

Hm, oke, werde nochmals schauen

EDIT: Ok, funktioniert nun erstmals mit dem PHP CLI .... wie gehts weiter?
esfaueen
 
Posts: 22
Joined: 08. September 2008 15:22

Postby glitzi85 » 09. September 2008 12:40

Tja, nun musst du den Apachen ebenfalls neu kompilieren und hoffen dass du ne glibc > 2.0 hast. Auch den export-Befehl vor den configure-Befehl. Was du allerdings bei diesem Configure angeben musst weiß ich nicht, vielleicht könnte Wiedmann die bei XAMPP verwendeten Parameter posten. Ansonsten müsstest du /opt/lampp/bin/httpd -l ausführen (oder wo auch immer die httpd-executable sitzt) und schauen welche Module fest einkompiliert sind. Alternativ kannst du natürlich auch einfach die Module verwenden, die du benötigst. ./configure --help gibt Aufschluss was möglich ist.

mfg glitzi
User avatar
glitzi85
 
Posts: 1920
Joined: 05. March 2004 23:26
Location: Dahoim

Postby esfaueen » 09. September 2008 14:11

was beudetet fest einkompiliert?

httpd -l gibt folgende Ausgabe:

Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c


d.h.?
esfaueen
 
Posts: 22
Joined: 08. September 2008 15:22

Postby glitzi85 » 09. September 2008 15:50

Hallo,

beim Apachen kannst du jede Menge Module eincompilieren. mod_rewrite ist ein prominentes Beispiel. Es gibt zwei wege, fest reinbauen, das würde z.B. so aussehen:

Code: Select all
./configure --with-enable-rewrite


dann wird mod_rewrite automatisch beim start geladen, ist also immer verfügbar. Du kannst das ganze aber auch optional ladbar via mod_so machen:

Code: Select all
./configure --enable-so --enable-mods-shared='rewrite dav'


Dabei werden dann im modules-Verzeichnis die Module generiert (mod_rewrite.so z.B.). Diese kannst du dann je nachdem ob du die brauchst laden oder nicht mit LoadModule in der httpd.conf (dazu MUSS mit --enable-so kompiliert werden!)

So wie es aussieht ist im XAMPP so ziemlich alles was geht über Shared Modules kompiliert. Am besten du schaust dir mal die verfügbaren Module an: http://httpd.apache.org/docs/2.2/mod/ und entscheidest dann welche du fest drinhaben möchtest und welche dynamisch. Ich hab's bei mir z.B. so aufgeteilt:

Fest: ssl vhost_alias so
shared: rewrite cgi dav dav_fs dav_lock deflate proxy proxy_http

Du brauchst allerdings nicht alle verfügbaren Module einzukompilieren. Klick die Module einfach an und schau dir den Status an: http://httpd.apache.org/docs/2.2/mod/mo ... tml#Status

mfg glitzi
User avatar
glitzi85
 
Posts: 1920
Joined: 05. March 2004 23:26
Location: Dahoim

Postby esfaueen » 30. September 2008 13:40

Hm, muss der Server ein 64 Bit OS haben?
esfaueen
 
Posts: 22
Joined: 08. September 2008 15:22

Next

Return to XAMPP für Linux

Who is online

Users browsing this forum: No registered users and 13 guests