Come è stato detto, non v'è alcun tipo di numero ottale. E la funzione chmod riceve il secondo parametro come numero intero. La conversione implicita di $perm
non presuppone che il numero sia ottale. Quindi, è necessario convertire la stringa "ottale" in numero intero utilizzando la funzione appropriata.
Basta usare octdec funzione
$perm = "0777"; //this is fetch from the database
chmod("myFolder/", octdec($perm));
O intval
chmod("myFolder/", intval($perm, 8));
P.S.
var_dump('0644' == 0644); // bool(false)
var_dump(intval('0644') == 0644); // bool(false)
var_dump(decoct('0644') == 0644); // bool(false)
var_dump(octdec('0644') == 0644); // bool(true)
var_dump(intval('0644', 8) == 0644); // bool(true)
Questo non funzionerà, perché questa stringa verrebbe convertita in 'int (777)' e lo zero iniziale sarebbe andato! – Rizier123
Leggi la documentazione, ho aggiunto appositamente il link ... "se la stringa inizia con" 0 ", la base viene considerata come 8 (ottale);" – Blaatpraat
Ti darò semplicemente lo script: 'echo $ perm = intval (" 0777 "); \t chmod ("test /", $ perm); \t echo "
". substr (sprintf ('% o', fileperms ('test /')), -4); 'Crea una cartella di prova e provala! Vedi se emette 0777 come permesso! – Rizier123