PDA

Bekijk Volledige Versie : Upload probleem



Dunax
19/06/12, 14:30
Beste forum members,

Ik loop al een aantal dagen tegen een vreemd probleem op met het uploaden van bestanden naar de server via een PHP script.

Het lijkt erop dat mijn server configuratie bestanden groter dan 2 MB niet accepteert, kleinere bestanden worden wel geaccepteerd.

Ik heb de volgende technieken toegepast met de hoop dat grote bestanden wel geaccepteerd zullen worden, helaas hielp dit ook niet.

- php.ini aangepast, ik heb post_max_size, upload_max_filesize en max_input_time hogere waardes gegeven (50M, 50M, 6000);
- LimitRequestBody in de virtuele httpd.conf toegevoegd (via DirectAdmin) met een waarde van 52428800 (LimitRequestBody 52428800)

Ook heb ik alle services na de configuratie opnieuw gestart, maar helaas kan ik nog steeds geen grotere bestanden uploaden.

PHP ziet $_FILES aan als een lege array, bestanden die kleiner dan 2 MB zijn worden wel weer gezien.

Heeft iemand een idee waar dit aan zou kunnen liggen? Overzie ik iets?

Alvast bedankt voor jullie advies!

Dunax
19/06/12, 14:41
Nog een kleine detail: ik heb phpinfo() gedraait en deze geeft de waardes ook correct aan, dus daar zal het niet aan liggen lijkt mij.

t.bloo
19/06/12, 15:26
Dat zit toch in de php.ini of je moet het expliciet in het script uitzetten.


upload_max_filesize = 2M

is namelijk de standaard instelling van de meeste distributies. Er zijn meestal 2 php.ini files op een systeem, goede kans dat je de verkeerde hebt. 50% kans 100% fout zegt mijn collega altijd :)

Dunax
19/06/12, 15:57
Dat zit toch in de php.ini of je moet het expliciet in het script uitzetten.


upload_max_filesize = 2M

is namelijk de standaard instelling van de meeste distributies. Er zijn meestal 2 php.ini files op een systeem, goede kans dat je de verkeerde hebt. 50% kans 100% fout zegt mijn collega altijd :)
Bedankt voor je tip. Heb je een idee waar de 2e php.ini zich zou kunnen bevinden op een DirectAdmin installatie? Verder geeft


<?php echo get_ini('upload_max_filesize'); ?>

aan dat het 50M is. Dus het lijkt erop dat ik de juiste php.ini heb bewerkt en dat deze actief is.

Ahmed
19/06/12, 16:37
Heb je suhosin op je webserver draaien? Dan nog even suhosin.upload_max_filesize toevoegen aan je php.ini (apache herstarten)

Dunax
19/06/12, 16:46
Heb je suhosin op je webserver draaien? Dan nog even suhosin.upload_max_filesize toevoegen aan je php.ini (apache herstarten)
Ik heb zover ik weet geen suhosin draaien. Hier is een link naar mijn phpinfo: http://sandbox.innovato.nl/phpinfo.php

t.bloo
19/06/12, 17:49
Kan ook nog een max in de form zijn?

(<input type="hidden" name="MAX_FILE_SIZE" value="..." />)

Dunax
19/06/12, 18:32
Kan ook nog een max in de form zijn?

(<input type="hidden" name="MAX_FILE_SIZE" value="..." />)
Er zit geen max o.d.i. in mijn form. Ik test het gewoon in een hele simpele form.



<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="Filedata" /><br />
<input type="submit" value="Submit!" />
</form>

t.bloo
19/06/12, 21:48
Ik heb geen ideeën meer. Misschien dat het door een ander te vinden is met wat experimenteren, foutmeldingen, logfiles, debuggers...

The-BosS
19/06/12, 22:06
Ik heb dat probleem ook eens gehad en het bleek totaal niets met de filesize te maken hebben, maar met de maximaal uit te voeren tijd van het php script. Je moet er rekening mee houden dat 50MB uploaden soms meer tijd in beslag kan nemen dan dat het uitvoeren van het php script is toegestaan en daardoor een timeout geeft. Probeer dus even om dat hoger te zetten en opnieuw te testen of het werkt.

magentohosting
19/06/12, 22:11
Wellicht dat het werkt om de betreffende uploadmap eens de rechten '777' te geven. Op het Gathering of Tweakers forum zag ik ook al dit topic (van jou neem ik aan) voorbij komen. Iemand daar zei ook al dat je het kon proberen met 'chmod 777 <map>'. Wat ik echter bedoel is 'chmod -R 777 <map>'.

Ik had hier laatst namelijk een probleem met het uploaden van bestanden vanuit WordPress. De map 'uploads' stond wel op 777, maar hij slikte hem maar niet.
Een 'chmod -R 777 <map>' loste dit probleem (wonderbaarlijk) op.

Soms doen servers / scripts de meest rare dingen... ;)

Dunax
19/06/12, 22:45
Ik heb dat probleem ook eens gehad en het bleek totaal niets met de filesize te maken hebben, maar met de maximaal uit te voeren tijd van het php script. Je moet er rekening mee houden dat 50MB uploaden soms meer tijd in beslag kan nemen dan dat het uitvoeren van het php script is toegestaan en daardoor een timeout geeft. Probeer dus even om dat hoger te zetten en opnieuw te testen of het werkt.
Dit staat al op 6000 seconden ingesteld. Verder test ik het met een file van 2,4 MB met 10 mbit upload, dus duurt het maar een aantal seconden. :)

Dunax
19/06/12, 22:47
Wellicht dat het werkt om de betreffende uploadmap eens de rechten '777' te geven. Op het Gathering of Tweakers forum zag ik ook al dit topic (van jou neem ik aan) voorbij komen. Iemand daar zei ook al dat je het kon proberen met 'chmod 777 <map>'. Wat ik echter bedoel is 'chmod -R 777 <map>'.

Ik had hier laatst namelijk een probleem met het uploaden van bestanden vanuit WordPress. De map 'uploads' stond wel op 777, maar hij slikte hem maar niet.
Een 'chmod -R 777 <map>' loste dit probleem (wonderbaarlijk) op.

Soms doen servers / scripts de meest rare dingen... ;)
De topic op GoT is inderdaad van mij. Ook dit heeft niet geholpen. Files groter dan 2 MB worden gewoon niet geplaatst. Toch bedankt. :)

The-BosS
20/06/12, 00:35
Dit staat al op 6000 seconden ingesteld. Verder test ik het met een file van 2,4 MB met 10 mbit upload, dus duurt het maar een aantal seconden. :)

Dan zou ik nog een paar dingen proberen, dit is wat ik uit je php info haal:



apache2handler
Timeouts Connection: 60 - Keep-Alive: 1




standard
default_socket_timeout 60 60


Verder is het niet omdat het maar een paar seconden duurt om te uploaden dat het script daarom al klaar is. Misschien zoals eerder al vermeld even log files bekijken of hier plaatsen, daar moet vast wel iets instaan waarom het niet werkt boven de 2MB.

Dunax
20/06/12, 01:17
Dan zou ik nog een paar dingen proberen, dit is wat ik uit je php info haal:



apache2handler
Timeouts Connection: 60 - Keep-Alive: 1




standard
default_socket_timeout 60 60


Verder is het niet omdat het maar een paar seconden duurt om te uploaden dat het script daarom al klaar is. Misschien zoals eerder al vermeld even log files bekijken of hier plaatsen, daar moet vast wel iets instaan waarom het niet werkt boven de 2MB.
Ook dit heb heb ik nu aangepast naar 6000 sec om te testen. Ik heb net de apache (error) logs bekeken en er staat niets in over mijn upload requests. PHP blijft ook maar een lege $_FILES array geven.

Dunax
20/06/12, 01:22
Ik denk dat ik morgen gewoon contact opneem met Leaseweb. Misschien dat zij een idee hebben waar het aan zou kunnen liggen. Bedankt voor jullie reacties in ieder geval!