[PHP] Uploaden werkt niet

Pagina: 1
Acties:
  • 123 views sinds 30-01-2008
  • Reageer

  • Metten
  • Registratie: September 1999
  • Laatst online: 15:35

Metten

ik hou het graag simpel

Topicstarter
Ik ben nu bezig met PHP en heb een uploadscript nodig, alleen het script op PHP.net werkt niet zo bij mij:

form:
code:
1
2
3
4
5
<form enctype="multipart/form-data" action="imgwrite.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="1000">
Send this file: <input name="userfile" type="file">
<input type="submit" value="Send File">
</form>


php code:
code:
1
2
3
4
5
if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
    copy($_FILES['userfile']['tmp_name'], "/pfimages");
} else {
    echo "Possible file upload attack. Filename: " . $_FILES['userfile']['name'];
}


Hij geeft in eerste instantie dus al een foutmelding bij 'is_uploaded_file', maar als ik dat weglaat werkt het ook niet zo best. Het lijkt er dus op dat PHP het form niet kan uitlezen. Wat gaat er fout??

PS:
Ik draai PHP 4.22 op Apache onder Win2000, kan het daar aan liggen?

PS2:
Ik heb al het hele internet + PWS afgezocht maar nix gevonden

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:04
Misschien moet je het eens aan de makers vragen wat er fout loopt?
Heb je zelf het script al eens gedebugged?

https://fgheysels.github.io/


  • Metten
  • Registratie: September 1999
  • Laatst online: 15:35

Metten

ik hou het graag simpel

Topicstarter
voor alle duidelijkheid: Ik heb dit script uit de PHP.net manual gehaald, dus het zou (?) goed moeten zijn.
en debuggen hoe werkt dat? (jaja ik ben noob)

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Leg es meer uit, wat is "werkt niet" ?
Upload je een file groter dan 1000 bytes?

  • Metten
  • Registratie: September 1999
  • Laatst online: 15:35

Metten

ik hou het graag simpel

Topicstarter
Ik heb het geprobeerd met een jpgje van 30k ofzo, maar ook met MAX_FILE_SIZE op 100000 wil het niet werken.

De is_uploaded_file geeft in eerste instantie al geen 'true' aan waardoor dit scriptje niet werk, maar ook als ik alleen de 'copy...' regel erin zet doet het niks (geen error, maar ook geen bestand ontvangen). Het lijkt er een beetje op dat hij het bestand niet goed opgestuurd krijgt uit het formulier.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

'het geeft een foutmelding dus ik haal het maar weg' is natuurlijk niet the way to go :). Kijk anders eens in de manual bij die functie voor wat extra ID-en.

Zet allereerst ff de errorlevel op E_ALL. Dan geeft ie namelijk ook warnings aan waar je mischien nog wel wat aan hebt, daarnaast is het mischien ook een ID om eens
PHP:
1
print_r($_FILES)
te doen en te kijken wat daar uitkomt (vaak staat er ook een nummertje bij wat aangeeft wat er fout gegaan is.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Metten
  • Registratie: September 1999
  • Laatst online: 15:35

Metten

ik hou het graag simpel

Topicstarter
De manual heb ik natuurlijk al doorgekeken, ook de pitfalls en zowel de NL als EN versie..


PHP:
1
print_r($_FILES)

levert 'Array()' op, dus volgens mij pakt hij hem niet in $_FILES..

PHP:
1
print_r($_FILES['userfile'])

of
PHP:
1
print_r($_FILES['userfile']['name'])

leveren "Notice: Undefined index: userfile in c:\webroot\magixx\imgwrite.php on line 18" op.

  • Minos111
  • Registratie: Augustus 2002
  • Laatst online: 05-03-2012
Het zou goed kunen dat de FTP-module van PHP niet, of niet juist is geïnstalleerd. PHP herkent dan ftp-functies als 'is_uploaded_file' niet!

  • Metten
  • Registratie: September 1999
  • Laatst online: 15:35

Metten

ik hou het graag simpel

Topicstarter
Minos111 schreef op 11 september 2002 @ 13:39:
Het zou goed kunen dat de FTP-module van PHP niet, of niet juist is geïnstalleerd. PHP herkent dan ftp-functies als 'is_uploaded_file' niet!
Tot zover ik weet gaat het om een HTTP upload, $_FILES is dan ook een afkorting van $HTTP_POST_FILES. Ook op PHP.net staat nergens iets over dat het een FTP upload zou zijn..

  • SJR
  • Registratie: Januari 2000
  • Laatst online: 15-02 13:58

SJR

Misschien draait php in safemode? Dan kan je niets uploaden. Zie safe_mode in de php.ini.

  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 16-08 07:25
heb je in je php.ini al gekeken naar:

upload_max_filesize
upload_tmp_dir

en de uitleg: http://www.php.net/manual/en/printwn/configuration.php

Misschien dat het daar nog aan ligt...

  • Metten
  • Registratie: September 1999
  • Laatst online: 15:35

Metten

ik hou het graag simpel

Topicstarter
Het stukje php.ini over de uploads:
code:
1
2
3
4
5
6
7
8
9
; Whether to allow HTTP file uploads.
file_uploads = On

; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
upload_tmp_dir = c:\webroot\files\

; Maximum allowed size for uploaded files.
upload_max_filesize = 2M

Ook safe mode is uit

  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 16-08 07:25
Misschien kun je nog proberen om van c:\webroot\files\ dit te maken:
[code]c:\\webroot\\files\[/code]
Dus even de backslashes escapen?

  • Metten
  • Registratie: September 1999
  • Laatst online: 15:35

Metten

ik hou het graag simpel

Topicstarter
hmm nu heb ik een ander script ergens gedownload.. werkt wel. Heb op mijn stage geen tijd gehad om te kijken waar het aan lag maar in ieder geval bedankt voor de reacties! :)
Pagina: 1