Upload per HTML/PHP ist nicht möglich...

rock4k

New Member
Hallo,

nachdem ich an einer neuen Seite programmiere, habe ich bemerkt, dass der Uplaod per HTML Formular nicht funktioniert.

Folgende Konfiguration des Server:

Eintrag in der vhosts:
<VirtualHost 217.172.179.12:80>
ServerName creaface.de
ServerAlias Unbenanntes Dokument web3.chicago012.server4free.de werbungvomfachmann.de Unbenanntes Dokument werbung-vom-fachmann.de Unbenanntes Dokument
DocumentRoot /srv/www/htdocs/web3/html
SuexecUserGroup web3 ftponly
ScriptAlias /cgi-bin/ /srv/www/htdocs/web3/html/cgi-bin/
php_admin_value open_basedir /srv/www/htdocs/web3/:/srv/www/htdocs/phpMyAdmin/:/srv/www/htdocs/confixx/html/gesperrt/
php_admin_value upload_tmp_dir /srv/www/htdocs/web3/phptmp/
php_admin_flag safe_mode Off
</VirtualHost>

Eintrag in der php.ini:
; Whether to allow HTTP file uploads.
file_uploads = On

; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
;upload_tmp_dir = /tmp

; Maximum allowed size for uploaded files.
upload_max_filesize = 10M

Muss noch was anderes eingestellt werden? Alle Verzeichnisse, die in den Konfigurationen angegeben sind, sind auch vorhanden und haben auch die passenden Rechte.

Vielen Dank. Für Eure Hilfe. Lokal habe ich bei mir annähernd die gleiche Umgebung, und da funktioniert es einwandfrei.

Vielen Dank für Eure Hilfe.
Grüsse Mario
 
Was sagen denn deine Logfiles wenn du einen Upload machen willst? Dies wäre noch eine wichtige fehlende Information.
 
(will use system default if not specified).
sagt doch das dann der Standardsystem - Ordner verwendet wird. Außerdem ist das in der vhost-Datei geregelt mit "php_admin_value upload_tmp_dir". Oder?

Sieht man das im Apache Log? Welche Log-Datei ist dafür zuständig?

Vielen Dank.
 
84.180.70.28 - - [29/Sep/2006:01:16:31 +0200] "GET /creaface07/ HTTP/1.1" 200 7765 "http://www.creaface.de/creaface07/login/news_bearbeiten.php?id=12" "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7"
84.180.70.28 - mario [29/Sep/2006:01:17:22 +0200] "POST /creaface07/login/news_liste.php?action=update&id=12 HTTP/1.1" 200 3565 "http://www.creaface.de/creaface07/login/news_bearbeiten.php?id=12" "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7"
das sind die beiden letzten Einträge, das POST als letzter Eintrag ist der Versuch mit dem Dateiupload...

Im Error-Log ist kein Eintrag zu finden.
 
Ich noch mal. Habe mir mal die Variablen ausgeben lassen, bevor in PHP der copy Befehl ausgelöst wird. Folgende Ausgabe:

Fileziel:
/srv/www/htdocs/web3/html/creaface07/images/ganzfrisch/creaface01.jpg

und die TMP-Datei:
/tmp/phpF4a5mY

Das Ziel ist korrekt und existent. Kann das sein, dass das mit dem TMP Ordner nicht hinhaut? Sollte der laut vhost-Konfiguration nicht /srv/www/htdocs/web3/phptmp/ sein?
 
Schau mal nach, ob die passenden Lese/Schreibrechte für /tmp gesetzt sind.

Wie führst du PHP aus? ISAPI oder CGI?
Schau mal händisch nach welchem User die Datei gehört (/tmp/deineTempDatei).

Und jetzt bitte NICHT auf die Idee kommen irgendwie sowas wie chmod 777 anzuwenden!
 
Danke für den Tipp und dem Hinweis (chmod). Habe schon Erfahrung mit Linux, zwar nich professionell aber auch kein Anfänger. :-)

Also der /tmp Ordner hat den Besitzer "root" und die Rechte 1777. Die Temporäre Datei die dort angegeben ist, existiert nicht im /tmp Ordner. Ich vermute, dass PHP den /tmp nicht beschreiben darf bzw. nutzen kann.

Aber sollte der eigentlichen Temp Ordner nicht der sein, der in der vhosts angegeben ist?

Wo finde ich heraus, wie PHP ausgeführt wird? Habe das noch nie nachschauen müssen.
 
Steht in der Apache Config.

Wenn das ein Modul mod_php.dll oder so geladen wird, dann läuft es als ISAPI.

Man kann auch beides gleichzeitig einrichten. Also keine Garantie.

Einfacher wäre es wenn du mit PHP eine leere Datei anlegst, oder auch mit Text drin. Anlegen nicht bearbeiten!

Dann kannste händisch nachsehen wem die Datei gehört. Ist es der entsprechende User ist es CGI, ist es wwwrun, apache oder sowas ist es ISAPI.

ODER...
info.php anlegen mit Inhalt:
<?
phpinfo();
?>

Diese dann aufrufen. Steht relativ weit oben drin als was es läuft.
 
Back
Top