[php]move_uploaded_file werkt niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • InfoTracer
  • Registratie: November 2001
  • Laatst online: 17:18
Ben nu al een tijdje aan het proberen maar het wil gewoon niet lukken.

Probleem:
Als ik een bestand update naar een map die ik heb aangemaakt via php met chmod 0777 en geeft deze false terug.
Maar als ik een map aanmaak via de ftp met 0777 dan wil hij wil het bestand uploaden.

Geprobeerd:
unmask
chmod

code:
mkdir:
PHP:
1
2
3
4
5
//$oldumask = umask(0) ;
//echo $dir."/".$_POST['newdir'];
mkdir($dir."/".$_POST['newdir'], 0777);
chmod($dir."/".$_POST['newdir'], 0777);
//umask( $oldumask );


move_uploaded_file:
PHP:
1
2
3
4
5
6
7
8
if (!move_uploaded_file($_FILES['uploadfile']['tmp_name'], $dir."/".$_FILES['uploadfile']['name']))
{
    echo "error";
}
else
{
    echo "gelukt";
}


weet er iemand wat ik fout doe of wat er fout kan zijn gegaan?

Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Volgens mij als je met PHP een map aanmaakt dan moet de parentmap ook de rechten hebben die je wilt maken voor je nieuwe map..

Acties:
  • 0 Henk 'm!

  • ibmos2warp
  • Registratie: Januari 2007
  • Laatst online: 20-11-2023

ibmos2warp

Eval is Evil

php.net zegt:
Note: When safe mode is enabled, PHP checks whether the directory in which you are about to operate has the same UID (owner) as the script that is being executed.
Oftewel je moet wel dezelfde gebruiker zijn om in die map te schrijven als safe mode aan staat. Meestal is dat niet het geval bij een free host. Maar ik weet niet of je dat hebt.
Het is alleen maar een tip / onthouddingetje

Ik weet alles van niks
Vind Excel ongelovelijk irritant.


Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Een methode: chmod je bovenliggende map 777. Dan kan je de dir wel met de juiste rechten aanmaken (waarschijnlijk waar apache onder draait) en chmod de map terug naar 755 :)

Acties:
  • 0 Henk 'm!

  • InfoTracer
  • Registratie: November 2001
  • Laatst online: 17:18
safe_mode staat idd aan.

maar het rare is dus als ik via ftp een map aanmaak dat je er wel bestanden in kan zetten
maar als ik via php een map aan maak er geen bestanden in kan zetten
je zou dus zeggen dat als je met php een map aanmaakt hij dezelfde eigenaar zou moeten hebben als je een file upload

Acties:
  • 0 Henk 'm!

  • InfoTracer
  • Registratie: November 2001
  • Laatst online: 17:18
mithras schreef op zondag 04 februari 2007 @ 15:27:
Een methode: chmod je bovenliggende map 777. Dan kan je de dir wel met de juiste rechten aanmaken (waarschijnlijk waar apache onder draait) en chmod de map terug naar 755 :)
alle mappen t/m "www" staan op 777

maar hij wil het maar niet doen

Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Stel, je root map is /var/www/, en je wil een map test/ aanmaken in /var/www/, dan zou je via ftp dat kunnen doen omdat de ftp user gelijk is aan de user van /var/www/. Als je /var/www/ naar 777 chmod, dan kan een apache-user er wél in schrijven.
Vervolgens dus wel weer /var/www/ terugzetten naar 755 ;)

Wat heb je precies gedaan? Wat is je hoofdmap, welke map probeer je aan te maken, welke heb je gechmod?

Acties:
  • 0 Henk 'm!

  • ibmos2warp
  • Registratie: Januari 2007
  • Laatst online: 20-11-2023

ibmos2warp

Eval is Evil

InfoTracer schreef op zondag 04 februari 2007 @ 15:38:
safe_mode staat idd aan.

maar het rare is dus als ik via ftp een map aanmaak dat je er wel bestanden in kan zetten
maar als ik via php een map aan maak er geen bestanden in kan zetten
Soms doen host's dat expres. PHP onder een andere gebruiker laten draaien. Om te zorgen dat je dit soort dingen dus niet kan doen.
je zou dus zeggen dat als je met php een map aanmaakt hij dezelfde eigenaar zou moeten hebben als je een file upload
Je bedoelt dat php dezelfde gebruiker als de ftp gebruiker moet zijn? Ja, dat klopt. Als ze dat zouden zijn dan zou het wel lukken... (Ik denk dus dat het er aan ligt dat php ondere een andere gebruiker draait.)

Ik weet alles van niks
Vind Excel ongelovelijk irritant.


Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
php zegt dan ook:
Note: When safe mode is enabled, PHP checks whether the directory in which you are about to operate has the same UID (owner) as the script that is being executed.
owner != rechten

Acties:
  • 0 Henk 'm!

  • InfoTracer
  • Registratie: November 2001
  • Laatst online: 17:18
even voor de duidelijkheid

map maken:
via ftp map maken = owner: xxxx(dus geeft een owner)
via php map maken = owner ? (niet bekent dus)

file moven:
ftp map: werkt
php map: werkt niet

het lijkt me dan zo dat hij geen owner mee geeft als php een map maakt.
hoe zou dit komen en hoe is dit op te lossen?

Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Hij geeft heus wel een owner mee hoor, maar die owner heeft geen rechten om een map te maken, CHMOD eerst met PHP anders de onderliggende map, safemode staat zowiezo aan dus je bent al flink beperkt. Ik zou maar even met je hoster mailen of ze de owner goed kunnen zetten van die map

Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Ik had niet goed gelezen toen ik dat zei over chmod: je kan op deze manier wél een map aanmaken, alleen zorgt safe_mode voor een restrictie waardoor het _niet_ lukt. Op deze manier kan je niet met php een map aanmaken, tenzij je hoster safe_mode wil uitzetten...

Verder draait php waarschijnlijk onder apache, dus met de uid van apache: www-data of (in enkele gevallen) apache

[ Voor 18% gewijzigd door mithras op 04-02-2007 16:12 ]


Acties:
  • 0 Henk 'm!

  • InfoTracer
  • Registratie: November 2001
  • Laatst online: 17:18
mithras schreef op zondag 04 februari 2007 @ 16:11:
Ik had niet goed gelezen toen ik dat zei over chmod: je kan op deze manier wél een map aanmaken, alleen zorgt safe_mode voor een restrictie waardoor het _niet_ lukt. Op deze manier kan je niet met php een map aanmaken, tenzij je hoster safe_mode wil uitzetten...

Verder draait php waarschijnlijk onder apache, dus met de uid van apache: www-data of (in enkele gevallen) apache
wat bedoel je met _niet_ aanmaken van een map?
bedoel je hiermee dat je eigenlijk niets met die map kan alleen maar verwijderen?
en de server draait idd op apache

Acties:
  • 0 Henk 'm!

  • InfoTracer
  • Registratie: November 2001
  • Laatst online: 17:18
dus eigenlijk is de oplossing
of owner ftp en php het zelfde
of safe_mode uit

Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Of via de ftp-functies van php de map aanmaken...
Pagina: 1