Volledige versie bekijken : [opgelost] Warning: upload_max_filesize exceeded -> fout negeren
Heedless
%Europe/Berlin %636 %2006, 16:16
Ik krijg bij een php upload script deze melding:
Warning: upload_max_filesize of 2097152 bytes exceeded - file [userfile=IMG_5300.JPG] not saved in Unknown on line 0
Dat komt door een beperking van mijn host (in dit geval localhost)
Hoe kan ik deze foutmelding afvangen om hem daarna op mijn eigen manier weer te geven?
Nu komt deze tekst bovenaan de pagina te staan, maar ik wil dat onderaan de tekst "Deze afbeelding is groter dan de 2mb die toegestaan is" te voorschijn komt, want dat hij te groot is weet ik ook wel.
Dus ik hoef niet te weten hoe ik dat limiet verhoog, maar hoe ik voorkom dat die tekst tevoorschijn komt. Ik kan zelf wel controleren of hij te groot is of niet.
w00
%Europe/Berlin %682 %2006, 17:23
Ala je dan even je code post, kunnen we het voor je aanpassen waar het nodig is.
Heedless
%Europe/Berlin %708 %2006, 18:00
Dit is waar het op gaat:
move_uploaded_file($_FILES['userfile']['tmp_name'], $path . $_FILES['userfile']['name']);
Dat mag hij niet doen vanwege die restrictie
Overigens heb ik nog een probleem met deze code. Ik zet een aantal gegegens in een database, haal dan het aangemaakte id van die gegevens op, en wil dat gebruiken als titel voor het bestand, dan lijkt dit mij voldoende ($id is het id):
move_uploaded_file($_FILES['userfile']['tmp_name'], $path . $id);
maar dit werkt niet of niet goed... maar de notatie klopt toch wel of niet?
echo gettype ($id);geeft aan dat $id gewoon een string is
UnrealEd
%Europe/Berlin %754 %2006, 19:06
als je even op php.net kijkt, zie je bij de $_FILES manual, een key 'size' staan. maak gewoon een if aan, en kijk of de filesize te groot is (in jouw geval 2Mb):
if($_FILES['userfile']['size'] > 2*1024*1024){
echo "bestand te groot";
}
dit zou moeten werken
groeten
Heedless
%Europe/Berlin %790 %2006, 19:57
Je hebt mijn vraag niet gelezen.
Ik weet hoe ik de filesize controleer, maar er komt een foutmelding over de site doordat de host die maat niet wil accepteren. Ik heb er al lang een eigen foutmelding in zitten maar er komt zoals ik al zei ook een foutmelding van de server, en die wil ik weg hebben.
Ik heb een filesize controlle, maar die werkt niet omdat ik deze fout krijg:
Warning: upload_max_filesize of 2097152 bytes exceeded - file [userfile=IMG_5056.JPG] not saved in Unknown on line 0
Ik echo de size van m`n foto en krijg die ook te zien, maar niet als ik over die 2mb grens heen ga. Dan krijg ik bovenstaande foutmelding en is de size van m`n foto opeens 0 kb zegt ie...
w00
%Europe/Berlin %810 %2006, 20:27
Probeer is zoiets:
if(!@move_uploaded_file($_FILES['userfile']['tmp_name'], $path . $_FILES['userfile']['name']))
{
die("te groot!");
}
Heedless
%Europe/Berlin %903 %2006, 22:41
Die pakt hij wel =)
Wat ik nu deed:
Je hebt een form met een aantal invulvelden en een browse veld.
Als je op submit klikt kijkt hij of de antwoorden voldoen aan de eisen die ik stel (bijv minimaal zoveel tekens). Als het niet goed is dan worden de teksten voor de velden rood bij de fouten, was het wel goed dan ging hij kijken of de afbeelding goed was of niet. Als die goed is upload hij hem met als naam een id nummer waaronder de rest van de info op is geslagen.
Ik heb nu jouw code meteen na het controleren van de velden gezet. Nu wordt de afbeelding dus direct opgeslagen en met zijn eigen naam ipv dat id.
Ik moet nu mijn volgorde van verwerken en wat namen van variabelen aanpassen daardoor, maar ik denk dat het wel gaat lukken. Bedankt
--
edit
toch niet...
Ten eerste krijg ik hem niet naar een andere map geupload dan waar de code staat... terwijl ik gewoon een geldig pad gebruik... (opslaglocatie = "tijdelijk/" . bestandsnaam
alleen bestandsnaam of "./".bestandsnaam werkt wel... maar naar een map niet... terwijl hij cmod 777 heeft
Heedless
%Europe/Berlin %934 %2006, 23:25
dit:
if (!@move_uploaded_file($_FILES['userfile']['tmp_name'], "tijdelijk/".$_FILES['userfile']['name']))
{
echo "<a href=\"tijdelijk/\">link</a>";
print_r($_FILES);
}
direct na het klikken op een knop werkt niet. De echo die komt wanneer hij niet werkt linkt wel gewoon naar die map. De print_r geeft aan dat er geen fouten zijn...
wat doe ik fout?...
------edit als ik ipv "tijdelijk/" het doel "./" gebruik komt hij wel op de server, maar dus in de map waar het script staat ipv een andere map
---edit 2
Ik heb de boel wat omgegooit en nu kan hij wel uploaden en geeft hij het goed aan als hij te groot is. Maar het uploaden kan alleen naar de hoofd map. Als ik naar een andere map wil uploaden, bijv "thumbs/" of "tijdelijk/" kan dat niet... Terwijl ik alle toestemming heb.
Ideeen?
w00
%Europe/Berlin %250 %2006, 07:01
Misschien dat dan de path niet meer klopt als je naar een map wilt uploaden. Dat het dan bijvoorbeeld dit wordt: http://site.nlthumbs/
terwijl het: http://site.nl/thumbs/ zou moeten zijn. Is maar een wilde gok hoor. Maar kijk dus even doormiddel van een echo hoe het path eruit ziet voordat je het upload, of probeer er eens een '/' voor te zetten. Dus dit:
if (!@move_uploaded_file($_FILES['userfile']['tmp_name'], "/tijdelijk/".$_FILES['userfile']['name']))
{
echo "<a href=\"/tijdelijk/\">link</a>";
print_r($_FILES);
}
Heedless
%Europe/Berlin %593 %2006, 15:14
Ik heb alle mogelijke combinaties al geprobeerd.
Ik krijg nu dit:
Warning: imagejpeg() [function.imagejpeg]: open_basedir restriction in effect. File(/thumbs/thumbbeatle.jpg) is not within the allowed path(s): (/home/deluchti/:/usr/lib/php:/usr/local/lib/php:/tmp) in /home/deluchti/public_html/webwinkel/toevoegen.php on line 280
Na wat opzoekwerk las ik dat er in je php.ini ofzo aangegeven staat waar je bij mag komen met scripts om te voorkomen dat je bijv scripts uit andere sites kan includen, maar daardoor kan ik dus niet iets opslaan in een andere map dan waar die code staat.
Weet iemand hoe ik dit oplos of moet ik m`n host maar bellen?
Heedless
%Europe/Berlin %701 %2006, 17:49
Reactie van de host:
Dit is een stukje beveiliging wat het niet mogelijk maakt om in andermans
bestanden te graven. U dient het volledige pad in de bestandsnaam te zetten, ipv
/thumbs/thumbbeatle.jpg, moet dit zijn /home/deluchti/public_html/....
Nu heb ik dat gedaan, heb het pad ($path) aangepast naar wat hij zei. Maar nu krijg ik steeds te lezen:
Warning: move_uploaded_file(/home/deluchti/public_html/webwinkel/afbeeldingen/foto.JPG) [function.move-uploaded-file]: failed to open stream: Permission denied in /home/deluchti/public_html/webwinkel/toevoegen.php on line 228
In die zin 228 staat:
move_uploaded_file($_FILES['userfile']['tmp_name'], $path . $_FILES['userfile']['name']);
En al die mappen hebben alle rechten, en ook het .php bestand
Heedless
%Europe/Berlin %899 %2006, 22:34
Ik heb het gevonden...
In het cPanel van m`n site zag ik dat de mappen chmod 777 hadden. Maar dat bleek niet zo te zijn. Ik heb de mappen in windows aangemaakt en via IE naar mijn ftp gesleept. En wat blijkt? Dan moet je via eigenschappen die chmod nog even instellen...
Dus online zei hij dat het goed was, terwijl dat niet zo was.
Binnenkort komen ze mijn iMac bezorgen, en ik kan niet wachten om van die *** windows af te komen....
TheZwier
%Europe/Berlin %569 %2006, 14:40
Dat ligt NIET aan windows... je kan ook gewoon een echt ftp programma gebruiken voor dat soort zaken..
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.