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:
  1. [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:
  1. <?php
  2. $error = "";
  3. $msg = "";
  4. $fileElementName = 'fileToUpload';
  5. if(!empty($_FILES[$fileElementName]['error']))
  6. {
  7. switch($_FILES[$fileElementName]['error'])
  8. {
  9.  
  10. case '1':
  11. $error = 'The uploaded file exceeds the upload_max_filesize directive in php.ini';
  12. break;
  13. case '2':
  14. $error = 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form';
  15. break;
  16. case '3':
  17. $error = 'The uploaded file was only partially uploaded';
  18. break;
  19. case '4':
  20. $error = 'No file was uploaded.';
  21. break;
  22.  
  23. case '6':
  24. $error = 'Missing a temporary folder';
  25. break;
  26. case '7':
  27. $error = 'Failed to write file to disk';
  28. break;
  29. case '8':
  30. $error = 'File upload stopped by extension';
  31. break;
  32. case '999':
  33. default:
  34. $error = 'No error code avaiable';
  35. }
  36. }elseif(empty($_FILES['fileToUpload']['tmp_name']) || $_FILES['fileToUpload']['tmp_name'] == 'none')
  37. {
  38. $error = 'No file was uploaded..';
  39. }else
  40. {
  41. $msg .= " File Name: " . $_FILES['fileToUpload']['name'] . ", ";
  42. $msg .= " File Size: " . @filesize($_FILES['fileToUpload']['tmp_name']);
  43. //for security reason, we force to remove all uploaded file
  44. $targetPath = $_SERVER['DOCUMENT_ROOT'] . '/downloads/files/' . $_FILES['fileToUpload']['name'];
  45. $tempFile = $_FILES['fileToUpload']['tmp_name'];
  46. //@unlink($_FILES['fileToUpload']);
  47. if(@move_uploaded_file($tempFile,$targetPath)) {
  48. $msg .= 'Plik został wysłany';
  49. }
  50. else {
  51. $msg .= 'Nie udało się wysłać pliku';
  52. }
  53. }
  54. echo "{";
  55. echo "error: '" . $error . "',\n";
  56. echo "msg: '" . $msg . "'\n";
  57. echo "}";
  58. ?>


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.