Hoi. Ik ben bezig met een proefopzetje waarbij ik via een form een naam kan kiezen voor het aanmaken van een directory. Dat gedeelte gaat goed. Vervolgens wil ik echter met behulp van de copy functie hierin een bestand plaatsen met de naam index.php. Echter het wil niet lukken omdat de doelmap niet wordt herkend. als ik een echo uitvoer van $target dan wordt het pad wel goed weergegeven. ik heb totaal geen idee wat er fout gaat.

Onderstaande de code van het formulier




<form action="create.php" method="POST">
Create File : <input type="text" name="file">
<input type="submit" value="Create">
</form>


Onderstaande de php code van create.php


<?php

$file=$_POST['file'];
mkdir($file, 777);
echo "Folder gecreeerd!";

$source = 'sourcefiles/test.php'; 
  

$target = $file.'/'.'index.php';
echo $target;

if( !copy($source, $target) ) { 
    echo "Bestand gekopieerd! \n"; 
} 
else { 
    echo "Bestand niet gekopieerd! \n"; 
} 

?>
Een bestand/directory aanmaken met PHP is heel wat anders dan uploaden hoor.
Het eerste is lokaal, en het tweede is een externe actie.
he arien. ja klopt inderdaad. ook geen optie.

heb het al gevonden. bij het aanmaken van de directory moet ik de rechten aanpassen.

if ( !file_exists($dir) ) {
mkdir ($dir, 0744);
}


nu nog rechten aanpassen voor de bestanden in deze map

[size=xsmall]Toevoeging op 29/08/2023 14:58:41:[/size]

is nu allemaal gelukt. het hele probleem waren dus de rechten van de aangemaakte directory.
Bij een directory die ik vooraf via ftp zelf had aangemaakt stonden de rechten dus al gelijk goed.
Weer wat geleerd. topic mag als het aan mij ligt worden gesloten. Iedereen nog hartelijk dank voor de hulp en advies.
Het kan zijn dat 777 niet geaccepteerd werd omdat dit gevaarlijk is. Je wilt NOOIT ALLE rechten geven voor jan en alleman.
755 is overigens voldoende voor de rechten. Misschien werd die wel toegekend als je de parameter voor de chmod-rechten in mkdir() achterwege liet. Elke server is immers anders geconfigureerd.
bedankt. ja ik had het intussen al gewijzigd in 0755. dat is dan prima?
Ik kan nu in ieder geval de directory openen en lezen ook.
Prima! :-)
ik denk dat 0777 beter had gewerkt dan 777.

Die 0 geeft hier aan dat het om ocale getallen gaat. (een tal-stelsel dat maar tot 7 kan tellen, zoals het meer gebruikelijke decimale stelsel 9 als hoogste heeft.)


0777 is
7 * 8 * 8 * +
7 * 8 +
7
= 511

https://www.php.net/manual/en/function.chmod.php
en https://www.rapidtables.com/convert/number/octal-to-decimal.html

Dat verklaart meteen waarom 7 voor alle rechten staat: alle bitjes in de byte staan aan.

111 in Binair staat voor 7 (1*2*2 + 1*2 + 1)



[size=xsmall]Toevoeging op 29/08/2023 21:07:42:[/size]

maarhe, zet altijd die error reporting aan. Ook voor simpele scriptjes. Je wordt dan meteen om de oren geslagen met foutmeldingen en warnings, ipv je blindstaren op "waarom werkt het toch niet?"
He Ivo. Bedankt voor de input. Je hebt helemaal gelijk. error report altijd aanzetten. Moet een gewoonte worden. Loop inmiddels door dit alles wel tegen een ander probleem aan. enkele direcory's aangemaakt met 755 kan ik niet meer verwijderen, ook niet vanuit de control panel op de server. heel vreemd. als ik 0755 gebruik wel. wat is het verschil!!
@Ivo P

De notatie met voorloop-nul isprima. maar het neemt niet weg dat chmod (0)777 wel gevaarlijk is, en niet te adviseren is:
https://askubuntu.com/questions/20105/why-shouldnt-var-www-have-chmod-777

Dit artikel gaat overigens niet alleen over het pad naar /var/www/, maar in het algemeen over alles. Het feit dat Paul (0)777 gebruikte, en alsnog een 'permission denied' kreeg, lijkt mij een beveiligingsmechanisme. Misschien SElinux? En maar goed dat dit draait.

[size=xsmall]Toevoeging op 29/08/2023 22:43:36:[/size]

Paul Weiss op 29/08/2023 22:39:31

He Ivo. Bedankt voor de input. Je hebt helemaal gelijk. error report altijd aanzetten. Moet een gewoonte worden. Loop inmiddels door dit alles wel tegen een ander probleem aan. enkele direcory's aangemaakt met 755 kan ik niet meer verwijderen, ook niet vanuit de control panel op de server. heel vreemd. als ik 0755 gebruik wel. wat is het verschil!!

Ik vermoed een ownership verhaal. Zie mijn vorige stukje script om te zien wie de owners zijn van een bestand, en mogelijk werkt een map ook.
he arien. ik heb niet 0777 gebruikt he.
je kan die chmod dan toch aanpassen, zodat je ze kan verwijderen?

Reageren