1
Hallo,
ich hoffe mir kann jemand hier das Verhalten des PHP-Uploads bei meinem lokalen Apache VirtualHost erklären (Apache2, PHP5). Wenn ich z.B. folgendes Testskript im Unterverzeichnis /cms/ laufen lasse:
test.html
test.php
Dann ist die Ausgabe immer nur Array() - also $_FILES ist leer. Wenn ich im Action aber action="http://local.domain.it/cms/test.php" angebe, funktioniert der Upload, $_FILES ist gefüllt. Warum ist das so?
Meine VHost-Datei für local.domain.it:
In der Domainroot funktioniert das Skript wie erwartet, auch ohne Angabe der Domain im action.
In der Domainroot liegt eine .htaccess:
und eine im Unterverzeichnis /cms/:
Habe ich da irgendwo eine Einstellung, die dieses doch eher merkwürdige Verhalten verursacht? Ein Fehlverhalten durch die zwei .htaccess?
Das ist leider nicht das einzige Problem... ^^ Die auskommentierte Zeile in der .htaccess von /cms/ wäre eigentlich gewollt - als z.B. die URL local.domain.it/cms/gallery/upload-1.html. Funktioniert aber nicht - der Fehlercode ist 404 not found. Deshalb musste ich einen Bindestrich nehmen und es zu local.domain.it/cms/gallery-upload-1.html machen - das funktioniert. Warum? Ich kann im regulären Ausdruck keinen Fehler entdecken...
ich hoffe mir kann jemand hier das Verhalten des PHP-Uploads bei meinem lokalen Apache VirtualHost erklären (Apache2, PHP5). Wenn ich z.B. folgendes Testskript im Unterverzeichnis /cms/ laufen lasse:
test.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<title>Uploadtest</title>
</head>
<body>
<form enctype="multipart/form-data" action="test.php" method="post">
<input name="userfile[]" type="file"><br />
<input name="userfile[]" type="file"><br />
<input type="submit" value="Senden">
</form>
</body>
</html>
test.php
<pre>
<?php
print_r($_FILES);
?>
</pre>
Dann ist die Ausgabe immer nur Array() - also $_FILES ist leer. Wenn ich im Action aber action="http://local.domain.it/cms/test.php" angebe, funktioniert der Upload, $_FILES ist gefüllt. Warum ist das so?
Meine VHost-Datei für local.domain.it:
<VirtualHost *>
ServerName local.domain.it
ServerAdmin webmaster@local.domain.it
DocumentRoot /var/www/public/local.domain.it/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/public/local.domain.it/>
Options -Indexes ExecCGI FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/www/public/local.domain.it/apache-error.log
LogLevel warn
CustomLog /var/www/public/local.domain.it/apache-access.log combined
ServerSignature On
</VirtualHost>
In der Domainroot funktioniert das Skript wie erwartet, auch ohne Angabe der Domain im action.
In der Domainroot liegt eine .htaccess:
RewriteEngine on
RewriteRule ^$ http://local.domain.it/band.html [R=301,L]
RewriteRule ^(news|band|downloads|livegigs|gallery|links|guestbook)\.html$ index.php?module=$1&page=1&language=de
RewriteRule ^(news|downloads|livegigs|gallery|links)\-p([2-9]|[1-9][0-9]+)\.html$ index.php?module=$1&page=$2
RewriteRule ^(guestbook)\-p([1-9]|[1-9][0-9]+)\.html$ index.php?module=$1&page=$2&detail=1
RewriteRule ^(news|downloads|livegigs)\/([A-Za-z0-9\-_]+)\-p([0-9]+)\.html$ index.php?module=$1&detail=$2&page=$3
RewriteRule ^(news|downloads|livegigs)\/([A-Za-z0-9\-_]+)\.html$ index.php?module=$1&detail=$2&page=1
und eine im Unterverzeichnis /cms/:
RewriteEngine on
RewriteBase /cms/
RewriteRule ^$ http://local.domain.it/cms/main.html [R=301,L]
RewriteRule ^(main|gallery)\.html$ index.php?module=$1&action=view
RewriteRule ^(gallery)-(edit|upload|pictures)-([1-9]|[1-9][0-9]+)\.html$ index.php?module=$1&action=$2&id=$3 [QSA]
#RewriteRule ^(gallery)\/(edit|upload|pictures)-([1-9]|[1-9][0-9]+)\.html$ index.php?module=$1&action=$2&id=$3 [QSA]
RewriteRule ^(gallery)-(new)\.html$ index.php?module=$1&action=$2
Habe ich da irgendwo eine Einstellung, die dieses doch eher merkwürdige Verhalten verursacht? Ein Fehlverhalten durch die zwei .htaccess?
Das ist leider nicht das einzige Problem... ^^ Die auskommentierte Zeile in der .htaccess von /cms/ wäre eigentlich gewollt - als z.B. die URL local.domain.it/cms/gallery/upload-1.html. Funktioniert aber nicht - der Fehlercode ist 404 not found. Deshalb musste ich einen Bindestrich nehmen und es zu local.domain.it/cms/gallery-upload-1.html machen - das funktioniert. Warum? Ich kann im regulären Ausdruck keinen Fehler entdecken...