[PHP] open_basedir restrictie ivm uploaden files

Pagina: 1
Acties:

Onderwerpen


  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
Ik heb een upload formulier welke een bestand in de map /HTML/files moet plaatsen. Alleen heeft de hoster heeft open_basedir aanstaan en nu gaat het fout op move_uploaded_file, hij mag blijkbaar de tmp-file niet opvragen ofzo?

Weet iemand hoe dit op te lossen is? Ik heb met ini_set upload_tmp_dir proberen te veranderen naar een plek binnen mijn open_basedir maar hij blijft /tmp gebruiken.


PHP:
1
2
3
4
5
Warning: move_uploaded_file() [function.move-uploaded-file]: open_basedir restriction in effect. File(/tmp/phpqGpIZX) is not within the allowed path(s): (/var/www/s/eendomein.nl) in /var/www/s/eendomein.nl/HTML/upload_class.php on line 131

Warning: move_uploaded_file(/tmp/phpqGpIZX) [function.move-uploaded-file]: failed to open stream: Operation not permitted in /var/www/s/eendomein.nl/HTML/upload_class.php on line 131

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpqGpIZX' to '/var/www/s/eendomein.nl/HTML/files/1157056702.rar' in /var/www/s/eendomein.nl/HTML/upload_class.php on line 131

  • cyberstalker
  • Registratie: September 2005
  • Niet online

cyberstalker

Eersteklas beunhaas

Volgens de documentatie zou move_uploaded_file alleen moeten controleren of de destination_dir zich in de toegestane tree bevindt. Dit is volgens mij een bug.

Ik ontken het bestaan van IE.


  • orf
  • Registratie: Augustus 2005
  • Laatst online: 22:00

orf

Laat anders eens een stukje code zien?

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
orf schreef op donderdag 31 augustus 2006 @ 23:03:
Laat anders eens een stukje code zien?
Tja, niet veel bijzonders, het gaat hier op mis:

PHP:
1
2
3
4
5
6
if(move_uploaded_file( $oFile['tmp_name'], $sFilePath ) )
{
echo "gelukt";
}else{
echo "mislukt";
}

  • orf
  • Registratie: Augustus 2005
  • Laatst online: 22:00

orf

Waarom $oFile['tmp_name'] en niet een super global? $_FILES['bestand']

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 22-09 15:11
Met ini_set kun je dergelijke variabelen niet aanpassen. Nouja, het kan wel, maar het heeft geen nut.
Het bestand wordt namelijk geupload nog voordat je PHP-script wordt gepatsed. Je veranderd de temp-dir dus pas nadat het bestand is geupload.

De open_basedir restrictie betekend dat PHP onder safe-mode draait, en de map welke je probeert uit te lezen niet in de open_basedir variabele, de lijst met toegestande mappen, is opgenomen.
Vraag je hoster de tijdelijke map aan die variabele toe te voegen, of in de virtual-host van jouw domein de tijdelijke map te wijzigen naar je web-root.
Pagina: 1