[PHP] File upload probleem na verhuizing naar andere server

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Wolf3D
  • Registratie: Augustus 2001
  • Laatst online: 22-08 12:03
Al maanden ben ik bezig met de bouw van een vrij grote website a-la marktplaats, maar dan iets anders. Hiervoor moeten mensen afbeeldingen kunnen uploaden. Het geuploade bestand gooi ik vervolgens door een functie heen die thumbnails maakt en daarnaast de afbeeldingen verkleint tot max 640x480. Dit stukje code heb ik maanden geleden geschreven, getest, en afgesloten.

Twee weken geleden is de website verhuist naar een nieuwe server. Na wat dingen ingesteld te hebben draait alles prima. Tenminste .. dat dacht ik. Nu blijkt dat als ik een advertentie aanmaak en daarbij een afbeelding upload, er hele rare problemen ontstaan als de afbeelding groter dan iig 800kb. Kleine bestanden zijn geen probleem.

Als ik kijk naar de instellingen bij phpinfo() dan staat "upload_max_filesize" op "16M". Lijkt me ruim voldoende dus. Aan de max_execution_time kan het ook niet liggen. Deze staat ingesteld op 30 maar na 15 seconden stopt het script er al mee. De MAX_FILE_SIZE die ik in de input meegeef staat op 2048000, dus een bestand van 2MB moet mogelijk zijn.

Het vreemde is ook dat ik geen foutmeldingen krijg, maar hij stopt er gewoon mee ergens midden in de pagina, en zelfs nog een stuk voor het stuk waar de upload wordt afgehandeld. Normaal wordt de hele pagina nog geparsed en krijg ik een foutmelding te zien, nu stopt gewoon alles. Ik heb geprobeerd in het script dat het upload gebeuren afhandeld een echo "bla"; te zetten, maar ook deze komt niet op het scherm. Als ik helemaal bovenin alle code de regel "print_r($HTTP_POST_FILES);" zet krijg ik ERROR = 0 terug. Oftewel, geen probleem met het uploaden.

Zijn er mensen die deze symptonen herkennen en meteen weten waar het aan ligt? :?
Ik zou niet weten waar ik het moet zoeken. Aangezien het bij kleine bestanden goed gaat, werken de functies dus goed. En bij grote bestanden uploaden gaat het mis, maar aangezien ik ERROR = 0 terugkrijg, moet het uploaden dus wel gelukt zijn....

HELLUP! Het hele gebeuren moet in december de lucht in...... :?

Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 12:54
Het gebruik van $HTTP_POST_FILES is depricated, daar heb je al sinds lange tijd $_POST array voor. (Over het hoe en wat daarvan, zie je FAQ en/of www.php.net).

Een andere instelling die ik nog mis in jouw verhaaltje is het maximale geheugen in megabytes dat PHP mag hebben. Standaard staat deze op een 8. Het kan dus zijn dat indien je gebruik maakt van de GDlibrary dat je PHP script te veel geheugen vreet. Dat kan je aanpassen door desbetreffende instelling in php.ini aan te passen.

[ Voor 7% gewijzigd door Sybr_E-N op 02-12-2005 11:09 ]


Acties:
  • 0 Henk 'm!

  • Wolf3D
  • Registratie: Augustus 2001
  • Laatst online: 22-08 12:03
Bedankt voor je snelle reactie!
Ja, stom met die $HTTP_POST_FILES! Gebruik ik ook nergens in mijn script, maar kwam deze op dit forum tegen, en heb hem meteen bovenin mijn script gezet.

Wat betreft dat geheugen. Via phpinfo() kom ik op "memory_limit = 16M". Lijkt me voldoende toch?
Helaas kan ik niet meer bij de vorige server om te kijken hoe de instellingen daar stonden. Daar heb ik alles uitvoerig getest en werkte alles prima....

Acties:
  • 0 Henk 'm!

  • Wolf3D
  • Registratie: Augustus 2001
  • Laatst online: 22-08 12:03
Even een update:
Ik heb zojuist een afbeelding van bijna 900kB geupload, en .. geen probleem!
Vervolgens pak ik een bestand van 850kB .. en .. halverwege stopt het script weer.
Het lijkt tamelijk willekeurig! Zal het dan toch aan het geheugen liggen?
Zo zwaar is het script nou ook weer niet volgens mij. Het maken van een thumbnail, het verkleinen van de orginele afbeelding, en vervolgens beide bestanden renamen naar de goede directory en naam en daarnaast wat 'onschuldige' SQL-query's er tussendoor.
Lijkt me toch niet dat hiervoor meer dan 16MB geheugen nodig is, voor een plaatje van .. in dit geval 850kB. Ook max 2MB zou makkelijk moeten kunnen, lijkt me.

Of zie ik hier iets over het hoofd?

Acties:
  • 0 Henk 'm!

  • teun-v
  • Registratie: Maart 2005
  • Niet online

teun-v

Koffie? ja graag...

Doe je ook nog aan MIME type controle in het script, soms worden verschillende jpeg bestanden die gemaakt zijn in verschillende programmas verschillende MIME type's verzonden (heb ik zelf ook last van gehad). Dit kan bijvoorbeeld "image/jpeg" zijn maar net zo goed "image/pjpeg".

Ook gek op Ovalracen? | Canon EOS 350 D | Canon EF-S 10-22mm F/3.5-4.5 | Sigma 17-70 F/2.8-4.5 DC Macro | Canon EF 70-200 F/2.8L USM | >Blog< |


Acties:
  • 0 Henk 'm!

  • Wolf3D
  • Registratie: Augustus 2001
  • Laatst online: 22-08 12:03
Ja, ik controleer op diverse dingen. Op extensie (*.jpg of *.gif), MIME-type (image/pjpeg,image/gif, image/jpeg) en grootte ($filesize > 2048000 = FOUT).
Dit moet gewoon goed werken.

Inmiddels heb ik ook de configuratie van de oude server gevonden, waar ik alles al uitgebreid op getest heb maanden geleden .. en daar stonden de volgende (relevante (volgens mij)) instellingen anders:

code:
1
2
3
4
5
6
                      oud    nieuw
max_execution_time  = (60)    (30)
max_input_time      = (120)   (-1)
memory_limit        = (niet ingesteld) (16MB)
post_max_size       = (55M)   (12M)
upload_max_filesize = (2MB)   (16MB)


(Eerste getal is van oude server, tweede is van nieuwe)

Omdat ik tijdens dit topic ben gaan twijfelen of het aan het geheugen kon liggen ben ik daarop gaan rondzoeken, en vind ik veel topics waarin staat dat het werken met images via GD veel geheugen kost.
Ik kan het geheugen natuurlijk handmatig gewoon op 128 ofzo zetten, maar waarschijnlijk wordt mijn hostingprovider hier niet blij van. Dus, welk moet minimaal genoeg zijn om 3 afbeeldingen van max 2mb groot tegelijk op de hierboven behandelde manier door PHP te laten verwerken?

Acties:
  • 0 Henk 'm!

  • --MeAngry--
  • Registratie: September 2002
  • Laatst online: 19-09 16:35

--MeAngry--

aka Qonstrukt

Opzich wordt die hoeveelheid geheugen natuurlijk maar heel eventjes gebruikt, maar als je nou heel veel gebruikers hebt die ineens plaatjes gaan uploaden...
Ik denk opzich dat de hostingprovider er niet heel veel problemen mee zal maken, zo'n waarde als 16MB is meestal ook maar in de wilde weg gekozen en dan wordt er wel vanuitgegaan dat dit voor de meeste scripts voldoende moet zijn. Ik zou zeggen, probeer gewoon een beetje uit welke waarde geen errors meer oplevert.
Begin vrij hoog en werk dan naar steeds lagere waarden. :)

Tesla Model Y RWD (2024)


Acties:
  • 0 Henk 'm!

  • Wolf3D
  • Registratie: Augustus 2001
  • Laatst online: 22-08 12:03
Daaraan zat ik ook te denken. Maar is dit wel een 'waterdichte' test?
Misschien dat hij bij bepaalde waardes NU geen error geeft, maar dat op momenten dat de server druk is, of bepaalde plaatjes misschien meer geheugen nodig hebben dan anderen, toch weer errors optreden??

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Het is toch de hoeveelheid geheugen die je per instantie van PHP mag gebruiken? Je kunt er dus vanuit gaan dat het niet uitmaakt of je nou met 10 of met 1000 op de server zit wat betreft die memory limiet. Wel moet je dan aan je timeout gaan denken omdat het langer duurt als het zo druk is.

Acties:
  • 0 Henk 'm!

  • Wolf3D
  • Registratie: Augustus 2001
  • Laatst online: 22-08 12:03
Hmmm, zit wat in inderdaad.
Ik heb een aantal tests erop losgelaten:
Bij 64MB gaat het nog mis, maar bij 128MB gaat het goed.
Is dat niet heel erg veel? Is mijn script erg inefficient (wat ik me niet kan voorstellen..), of zijn dit normale hoeveelheden aan geheugen voor dit soort activiteiten?
Pagina: 1