2016-07-25 4 views
2

Ich habe Probleme, Dateien von PHP hochzuladen. Das Seltsame ist, dass einige Dateien funktionieren und andere nicht. Ich kann es mit dem folgenden Skript reproduzieren:Nur bestimmte Dateien, die in PHP hochladen (mit Docker für Windows)

<!DOCTYPE html> 
<html> 
<body> 

<form action="test.php" method="post" enctype="multipart/form-data"> 
    <input type="file" name="fileToUpload" id="fileToUpload"> 
    <input type="submit" value="Upload" name="submit"> 
</form> 

</body> 
</html> 

<?php 

var_dump($_FILES); 

Wenn es fehlschlägt, ist der Ausgang:

array(1) { 
    ["fileToUpload"]=> 
    array(5) { 
    ["name"]=> 
    string(13) "image_2_3.jpg" 
    ["type"]=> 
    string(0) "" 
    ["tmp_name"]=> 
    string(0) "" 
    ["error"]=> 
    int(3) 
    ["size"]=> 
    int(0) 
    } 
} 

Von dem, was ich verstehe, der Fehlercode 3 zeigt an, dass es sich um eine Teil Upload ist jedoch, ich Ich bin mir nicht sicher, warum es nur für bestimmte Dateien auftritt. Ich kann kein Muster in den Dateien sehen, die nicht funktionieren. Zum Beispiel ist eine der Dateien, die nicht funktioniert, etwa 70kb, während eine andere Datei, die funktioniert, 180kb ist, also scheint es kein Problem mit der Dateigröße zu sein.

Ich verwende dies auf einem Andock-Container unter Windows 10. Das Docker-Image basiert auf dem offiziellen PHP Bild. Ich habe die Tags 5.5-Apache und 5.6-Apache getestet. Der Code selbst wird von einem bereitgestellten Volume in Windows ausgeführt.

Die geladenen Apache-Module sind:

core mod_so mod_watchdog http_core mod_log_config mod_logio mod_version 
mod_unixd mod_access_compat mod_alias mod_auth_basic mod_authn_core 
mod_authn_file mod_authz_core mod_authz_host mod_authz_user mod_autoindex 
mod_deflate mod_dir mod_env mod_filter mod_headers mod_mime prefork 
mod_negotiation mod_php5 mod_rewrite mod_setenvif mod_status 

Alle Ideen werden geschätzt.

EDIT: Hat einen isolierten Test ausgeführt, der ein einfaches php: 5.5-Apache-Image ausführt, mit dem gerade erwähnten PHP-Code und bin immer noch in der Lage, das Problem zu reproduzieren.

In meinem letzten Test erzeugt diese Datei die Ausgabe: http://s000.tinyupload.com/?file_id=14588523736227077930

Während dieses arbeitete: http://s000.tinyupload.com/?file_id=03989814485857897493

+0

Alles in den Protokolldateien? Sind immer dieselben MIME-Typen fehlerhaft? probierst du nur Bilddateien? – Anigel

+0

Sie müssen die PHP.ini bearbeiten, um es zu ermöglichen. – prgrm

+0

Sie müssen weitere Informationen angeben, welche Dateien nicht funktionieren, welche Dateigrößen. Höchstwahrscheinlich Ihr Server Dateien ab einer bestimmten Größe ablehnt, dann müssen Sie in Ihrem Ini konfigurieren (Oder htaccess, wenn es größere Dateigrößen + größere Upload-Größe zulassen darf) –

Antwort