Pagina 1 din 1

Setare CHMOD cu permisiuni din GET

Scris: Sâm Ian 12, 2013
de steell
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.

Setare CHMOD cu permisiuni din GET

Scris: Sâm Ian 12, 2013
de steell
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);

Setare CHMOD cu permisiuni din GET

Scris: Sâm Ian 12, 2013
de MarPlo
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';
}