Witam,
korzystam z gotowego rozwiązania uploadu plików na serwer ->
http://www.phpletter.com/Our-Projects/AjaxFileUpload/Niestety to rozwiązanie nie działa dokońca na serwerze OVH.
Gdy przesyłam plik o wadze <15MB wszystko działa prawidłowo i plik zostaje przesłany na serwer.
Problem jednak pojawia się gdy chcę przesłać większy plik np.: 30MB. Wtedy pojawia się błąd HTTP 500, a w logach serwera odczytuje:
[Tue Feb 01 19
:13
:29 2011
] [error
] [client 178
.42
.155
.252
] [host www
.mojadomena
.pl
] Premature
end of script headers
: doajaxfileupload
.php
, referer
: <a href
="http://www.mojadomena.pl" target
="_blank">http
://www.mojadomena.pl</a>
Podaję kod pliku php który powoduje błąd:
<?php
$error = "";
$msg = "";
$fileElementName = 'fileToUpload';
if(!empty($_FILES[$fileElementName]['error'])) {
switch($_FILES[$fileElementName]['error'])
{
case '1':
$error = 'The uploaded file exceeds the upload_max_filesize directive in php.ini';
break;
case '2':
$error = 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form';
break;
case '3':
$error = 'The uploaded file was only partially uploaded';
break;
case '4':
$error = 'No file was uploaded.';
break;
case '6':
$error = 'Missing a temporary folder';
break;
case '7':
$error = 'Failed to write file to disk';
break;
case '8':
$error = 'File upload stopped by extension';
break;
case '999':
default:
$error = 'No error code avaiable';
}
}elseif(empty($_FILES['fileToUpload']['tmp_name']) || $_FILES['fileToUpload']['tmp_name'] == 'none') {
$error = 'No file was uploaded..';
}else
{
$msg .= " File Name: " . $_FILES['fileToUpload']['name'] . ", ";
$msg .= " File Size: " . @filesize($_FILES['fileToUpload']['tmp_name']); //for security reason, we force to remove all uploaded file
$targetPath = $_SERVER['DOCUMENT_ROOT'] . '/downloads/files/' . $_FILES['fileToUpload']['name'];
$tempFile = $_FILES['fileToUpload']['tmp_name'];
//@unlink($_FILES['fileToUpload']);
$msg .= 'Plik został wysłany';
}
else {
$msg .= 'Nie udało się wysłać pliku';
}
}
echo "error: '" . $error . "',\n"; echo "msg: '" . $msg . "'\n"; ?>
Takie rozwiązanie działa na innym serwerze bez problemu.
Podaje niektóre parametry serwera na OVH:
-PHP Version 5.2.17
-post_max_size 64M
-upload_max_filesize 64M
Dziwne jest też to że wcześniej wysyłałem pliki na OVH bez problemu nawet te duże, ale nagle przestało działać, a nic nie zmieniałem. Pisałem do administracji OVH ale umywają ręce, sądząc że wina leży po mojej stronie.