Seite 1 von 2
PHP: Dateien hochladen.
Verfasst: Mi Jan 27, 2010 4:23 pm
von naums
In einigen meiner Webprojekten will ich eine PHP Bildergalerie bzw. in einem sogar eine Videosammlung. Der Nutzer (oder zumindest der Admin) soll dabei Bilder bzw. Videos hochladen können, ohne dass er die halbe Datenbank umschreiben muss. Wie kann ich vom Nutzer Dateien schicken lassen, diese empfangen umbenennen und in einen bestimmten Ordner verfrachten? Der Eintrag in die DB ist das geringste Problem, das bekomme ich sicher auch selbst hin.
Re: PHP: Dateien hochladen.
Verfasst: Mi Jan 27, 2010 5:01 pm
von Jside
http://www.php-dummies.de/script/Tutori ... pload.html
Nicht vergessen, die Videodateien in flv. zu konvertieren, wenn diese in einem Flashplayer angezeigt werden sollen. Beim Upload der Dateien darauf achten, das diese sicher verstaut und nicht Ausführbar sind, sonst kann man ganz leicht ein Ausführbares PHP Skript einschleusen.
Re: PHP: Dateien hochladen.
Verfasst: Mi Jan 27, 2010 5:52 pm
von naums
naja, wenn ich direkt nur Dateien zulasse die jpg, png oder gif sind...???
Warum sollte ich die Videos in flv konvertieren??? Ich lasse nur .avi Dateien zu. Die sollen alle mit dem DivX WebPlayer angezeigt werden.

Re: PHP: Dateien hochladen.
Verfasst: Mi Jan 27, 2010 5:54 pm
von AnGaiNoR
naums hat geschrieben:naja, wenn ich direkt nur Dateien zulasse die jpg, png oder gif sind...???
Weil man ein PHP-Skript (Endung .php) auch einfach in ein Bildformat umbenennen kann (Endung .gif).
Re: PHP: Dateien hochladen.
Verfasst: Do Jan 28, 2010 6:52 pm
von cloidnerux
Ich habe einen Uploadserver selbstgeschrieben, der Thred dazu sollte sich noch hier befinden.
Den Sourcecoe dazu kanst du hier Herunterladen:
http://cloidnerux.cl.funpic.de/
Re: PHP: Dateien hochladen.
Verfasst: Sa Jan 30, 2010 2:31 pm
von naums
um mal eben hierher zurückzukommen:
http://www.php-dummies.de/script/Tutori ... pload.html
Irgendwie will das Skript bei mir nichts hochladen. entweder ich mach was falsch bei chmod oder aber das Skript is falsch. Folgende Varianten: unter Windows: XAMPP der Skript gibt folgendes aus:
Fehler beim Speichern
Unter Linux (Ubuntu 9.10 Karmic Koala) gibt das Skript das gleiche aus. (Apache) Den Ordner hab ich unter Linux schon mit einem sudo chmod 777 belegt aber trotzdem zeigt mir nautilius an, nur der Root hätte schreibrechte. -.-
Re: PHP: Dateien hochladen.
Verfasst: Sa Jan 30, 2010 6:43 pm
von cloidnerux
Unter Linux (Ubuntu 9.10 Karmic Koala) gibt das Skript das gleiche aus. (Apache) Den Ordner hab ich unter Linux schon mit einem sudo chmod 777 belegt aber trotzdem zeigt mir nautilius an, nur der Root hätte schreibrechte. -.-
Versuche es mal mit chown <Nutzername>.
Re: PHP: Dateien hochladen.
Verfasst: Sa Jan 30, 2010 8:53 pm
von Jside
cloidnerux hat geschrieben:
Unter Linux (Ubuntu 9.10 Karmic Koala) gibt das Skript das gleiche aus. (Apache) Den Ordner hab ich unter Linux schon mit einem sudo chmod 777 belegt aber trotzdem zeigt mir nautilius an, nur der Root hätte schreibrechte. -.-
Versuche es mal mit chown <Nutzername>.
Um genau zu sein:
Terminal hat geschrieben:chown -R www-data /verzeichniss
chmod -R 777 /verzeichniss
Dadurch wird das Verzeichniss und alle darunterliegenden Dateien dem user www-data zugesprochen, und bekommen alle einen Chmod 777. Ewtl. heißt der User auch www, wie bei meinem FreeBSD.
Wenn das Script irgendwelche Dateien zwischenspeichert, wie es beim PHP Upload, in der php.ini
ja glaubisch schon auf /tmp gesetzt ist, sollte natürlich /tmp auch für den www-data User schreibbar sein....
Re: PHP: Dateien hochladen.
Verfasst: Sa Jan 30, 2010 11:58 pm
von naums
Wenn das Script irgendwelche Dateien zwischenspeichert, wie es beim PHP Upload, in der php.ini ja glaubisch schon auf /tmp gesetzt ist, sollte natürlich /tmp auch für den www-data User schreibbar sein....
ist es das etwa nicht immer??? hm... ich schau mal.
chown -R www-data /verzeichniss
chmod -R 777 /verzeichniss
jaaaaa, aber wenn das für den User www-data is, warum sollte ich dann da rein schreiben können???
Re: PHP: Dateien hochladen.
Verfasst: So Jan 31, 2010 5:43 am
von Jside
naums hat geschrieben:Wenn das Script irgendwelche Dateien zwischenspeichert, wie es beim PHP Upload, in der php.ini ja glaubisch schon auf /tmp gesetzt ist, sollte natürlich /tmp auch für den www-data User schreibbar sein....
ist es das etwa nicht immer??? hm... ich schau mal.
Mhmhm mal sehen:
FreeBSD 8.0 hat geschrieben:x330-1# cat /usr/local/etc/php.ini | grep upload
; Whether to allow HTTP file uploads.
file_uploads = On
; Temporary directory for HTTP uploaded files (will use system default if not
;upload_tmp_dir =
; Maximum allowed size for uploaded files.
upload_max_filesize = 20M
Ubuntu Server 9.10 hat geschrieben:jan@dl360g2:~$ cat /etc/php5/apache2/php.ini | grep upload
; Whether to allow HTTP file uploads.
file_uploads = On
; Temporary directory for HTTP uploaded files (will use system default if not
;upload_tmp_dir =
; Maximum allowed size for uploaded files.
upload_max_filesize = 20M
Wie du siehst nicht. Aber laut dem Kommentar auf System default, was ja /tmp sein dürfte (gehört dem Benutzter root, bei drwxrwxrwt auf beiden). Bei mir funktioniert der Upload auf beiden Servern, aufdenen läuft je ne MediaWiki, und auf dem einen zudem 2x phpBB3 Boards, und der Upload funzt überall. Kann es vielleicht sein, das du die Maximale Uploadgröße immernoch auf 2MB stehen gelassen hast, und versuchst was größeres hochzuladen?
Dumpe mal am besten alle Variablen des Scripts beim Uploaden einer Plaintextdatei, und schau nach, was da so herauskommt...
naums hat geschrieben:jaaaaa, aber wenn das für den User www-data is, warum sollte ich dann da rein schreiben können???
Den Satz versteh ich nich so ganz. Das PHP Script wird vom User www-data bzw. www Ausgeführt.