PHP: Dateien hochladen.

Fragen zum Thema HTML, JavaScript, PHP
Benutzeravatar
naums
Beiträge: 740
Registriert: Sa Jan 02, 2010 10:40 pm
Kontaktdaten:

PHP: Dateien hochladen.

Beitrag von naums » Mi Jan 27, 2010 4:23 pm

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.
.globl truth
truth:
mov r0, #42
mov pc, lr

Benutzeravatar
Jside
Beiträge: 377
Registriert: Di Nov 11, 2008 12:56 am

Re: PHP: Dateien hochladen.

Beitrag von Jside » Mi Jan 27, 2010 5:01 pm

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.

Benutzeravatar
naums
Beiträge: 740
Registriert: Sa Jan 02, 2010 10:40 pm
Kontaktdaten:

Re: PHP: Dateien hochladen.

Beitrag von naums » Mi Jan 27, 2010 5:52 pm

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. ;)
.globl truth
truth:
mov r0, #42
mov pc, lr

AnGaiNoR
Beiträge: 212
Registriert: Sa Jul 19, 2008 7:07 pm
Wohnort: Dresden

Re: PHP: Dateien hochladen.

Beitrag von AnGaiNoR » Mi Jan 27, 2010 5:54 pm

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).
Physics is like sex: sure, it may give some practical result, but that's not why we do it.
(Richard P. Feynman)

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: PHP: Dateien hochladen.

Beitrag von cloidnerux » Do Jan 28, 2010 6:52 pm

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/
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
naums
Beiträge: 740
Registriert: Sa Jan 02, 2010 10:40 pm
Kontaktdaten:

Re: PHP: Dateien hochladen.

Beitrag von naums » Sa Jan 30, 2010 2:31 pm

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. -.-
.globl truth
truth:
mov r0, #42
mov pc, lr

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: PHP: Dateien hochladen.

Beitrag von cloidnerux » Sa Jan 30, 2010 6:43 pm

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>.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Jside
Beiträge: 377
Registriert: Di Nov 11, 2008 12:56 am

Re: PHP: Dateien hochladen.

Beitrag von Jside » Sa Jan 30, 2010 8:53 pm

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....

Benutzeravatar
naums
Beiträge: 740
Registriert: Sa Jan 02, 2010 10:40 pm
Kontaktdaten:

Re: PHP: Dateien hochladen.

Beitrag von naums » Sa Jan 30, 2010 11:58 pm

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???
.globl truth
truth:
mov r0, #42
mov pc, lr

Benutzeravatar
Jside
Beiträge: 377
Registriert: Di Nov 11, 2008 12:56 am

Re: PHP: Dateien hochladen.

Beitrag von Jside » So Jan 31, 2010 5:43 am

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.

Antworten