Setare CHMOD cu permisiuni din GET

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
Avatar utilizator
steell
Mesaje:190

Setare CHMOD cu permisiuni din GET

Salut.
Incerc sa schimb permisiunile unui fisier, insa permisiunile sunt preluate dintr-o variabila $_GET.

Cod: Selectaţi tot

if (chmod($fisier, $_GET['permisiune'])) {
   echo 'succes';
}
 
Daca scriu de exemplu 0777 si trimit prin $_GET, nu o sa seteze aceste permisiuni, va seta 0000, indiferent de ce scriu in acea variabila $_GET.
Am afisat tipul variabilei si zice ca este string, poate asta e problema.
Din cate am observat nu pot pune intre ghilimele permisiunile de exemplu: chmod($fisier, "0777")
Am incercat sa pun fiecare cifra in cate o variabila si apoi sa le concatenez insa tot nu merge.

steell Mesaje:190
Am gasit raspunsul pe php.net, se pare ca atunci cand adaugam permisiunile preluate din variabile, sirul respectiv (care este octal) trebuie convertit in unul decimal. Puteti folosi acest script pentru a face asta:

Cod: Selectaţi tot

<?php
$owner = 7;
$group = 7;
$public = 7;
$mode = '0'.$owner.$group.$public;
$mode_dec = octdec($mode);    // converteste din octal in decimal
chmod('fisier.txt', $mode_dec);
?>
Doar atunci cand adaugam permisiunile direct in functia chmod() putem sa le scriem in mod octal.
Exemplu:

Cod: Selectaţi tot

chmod('fisier.txt', 0777);

MarPlo Mesaje:4343
Salut
Asa am gasit si eu in comentariile date de utilizatori pe site-ul php.net , la pagina;
php.net/manual/en/function.chmod.php
se da ca solutie utilizarea in aceasta situatie a functiei octdec() .
Inncearca asa:

Cod: Selectaţi tot

if(chmod($fisier, octdec($_GET['permisiune']))) {
  echo 'succes';
}
 

Subiecte similare