Portrety Uliczne Nieznajomych - zobacz wyjątkową galerię portretów z warszawskich ulic
ZALOGUJ SIĘ
login:
hasło:
przypomnij hasło
załóż konto użytkownika
(i zobacz kilka porad gratis)
   
WYSZUKIWARKA I DZIAŁY
całe porady  tytuły
zaznacz działy do przeszukania
(brak wyboru = wszystkie działy)
PHP
MySQL >
PostgreSQL
SQLite
Perl
Java
XML
XSLT
XPath
WML
SVG
RegExp
Wyszukiwarki
Ochrona
VBScript
Google Plus
XHTML/CSS
JavaScript
Grafika
Flash
Photoshop
Windows
Linux
Bash
Apache
Procmail
E-biznes
Explorer
Opera
Firefox
Inne porady
   
KURSY, DOKUMENTACJE
Własne:
XHTML/CSS
JavaScript
ActionScript
WML, RSS, SSI
Pozostałe:
PHP
MySQL
Java API
więcej...
   
użytkowników online: 63
W CZYM MOGĘ POMÓC?


   
OPINIE UŻYTKOWNIKÓW
W takich dniach, jak ten, nie żałuję, że wykupiłem abonament. Korzystam z porad na tych stronach nawet kilkanaście razy w tygodniu i dzięki nim prace nad stronami dla klientów idą mi o wiele szybciej, a strony wyglądają bardziej profesjonalnie. Nie wiem, jak mogłem wcześniej pracować bez dostępu do porad w tym serwisie!

Wojciech Miszkiewicz

   
GALERIA FOTOGRAFII
   
PODRĘCZNIK PHP 5.x, 4.x, 3.x - częściowo spolszczony / źródło: www.php.net

[Spis] [A] [B] [C] [D] [E] [F] [G] [H] [I] [J] [K] [L] [M] [N] [O] [P] [Q] [R] [S] [T] [U] [V] [X] [W] [Z]

chmod

(PHP 3, PHP 4, PHP 5)

chmod -- Zmienia prawa dostępu do pliku

Opis

bool chmod ( string nazwa_pliku, bool prawa )

Dokonuje zmiany praw pliku podanego w parametrze nazwa_pliku na podane w prawa.

Pamiętaj, że parametr prawa nie jest automatycznie zastępowany wartością oktalną (ósemkową), więc łańcuchy (takie jak "g+w") nie będą poprawnie interpretowane. Aby zapewnić poprawność operacji musisz parametr prawa poprzedzić prefixem zero (0):

<?php
  chmod
("/somedir/somefile", 755);  // dziesiętnie; prawdopodobnie nieprawidłowo
 
chmod("/somedir/somefile", "u+rwx,go+rx"); // łańcuch; nieprawidłowo
 
chmod("/somedir/somefile", 0755);  // ósemkowo; poprawna wartość dla praw
 
?>

Parametr prawa zawiera trzy cyfry w systemie ósemkowym określające prawa dostępu dla właściciela, grupy do której on należy oraz wszystkich innych. Jedna cyfra może zostać obliczona poprzez dodanie do siebie potrzebnych uprawnień. Cyfra 1 oznacza nadanie praw do wykonania, cyfra 2 oznacza, że plik będzie zapisywalny, cyfra 4 oznacza, że plik będzie można odczytać. Dodając te cyfry określamy potrzebne uprawnienia. Więcej o prawach w systemie Unix można przeczytać w 'man 1 chmod' i 'man 2 chmod'.

<?php
// Odczyt i zapis dla właściciela, żadnych praw dla innych
chmod("/katalog/plik", 0600);

// Odczyt i zapis dla właściciela, odczyt dla wszystkich 
chmod("/katalog/plik", 0644); 
  
// Wszystkie prawa dla właściciela, odczyt i wykonanie dla innych 
chmod("/katalog/plik", 0755); 
  
// Wszystkie prawa dla właściciela, odczyt i wykonanie dla grupy właściciela 
chmod("/katalog/plik", 0750); 
?>

Zwraca TRUE w przypadku sukcesu, FALSE w przypadku porażki.

Notatka: Bieżący użytkownik to użytkownik pod którym działą PHP. Prawdpodobnie nie jest to ten sam użytkownik, którego używasz normalnie przy dostępie do shell'a lub FTP.

Notatka: Ta funkcja nie będzie działać dla zdalnych plików, ponieważ przetwarzany plik musi być dostępny poprzez system plików serwera.

Notatka: Kiedy włączony jest tryb bezpieczny, PHP sprawdza czy pliki lub katalogi na których mają zostać wykonane operacje posiadają taki sam UID (właściciela) jak skrypt, który jest wykonywany. W dodatku, nie możesz ustawić SUI, SGID i bitów lepkości (sticky bits).

Patrz także: chown() i chgrp().




User Contributed Notes

memp
23-Aug-2005 12:04

If you are storing your mode in a variable like

$mode = 0755;

you will run into the inevitable octal mode problem.  An easy way around that is to use the octdec() function.

chmod("some_filename.ext", octdec($mode));


masha at mail dot ru
11-Jul-2005 06:23

Usefull reference:

Value    Permission Level
400    Owner Read
200    Owner Write
100    Owner Execute
40    Group Read
20    Group Write
10    Group Execute
4    Global Read
2    Global Write
1    Global Execute

(taken from http://www.onlamp.com/pub/a/php/2003/02/06/php_foundations.html)


computerguru at spymac dot com
07-Apr-2005 12:05

The ultimate CHMOD solution

Go to http://sshqudsi.com/computerguru/

and download chmod-win

it converts windows settings to chmod and vice versa!


alex at feidesign dot com
01-Apr-2005 02:20

If you cannot chmod files/directories with PHP because of safe_mode restrictions, but you can use FTP to chmod them, simply use PHP's FTP-functions (eg. ftp_chmod or ftp_site) instead. Not as efficient, but works.


info at rvgate dot nl
03-Feb-2005 02:12

When using ftp_rawlist, in order to get the chmod number from the attributes, i use this code:

<?php
function chmodnum($mode) {
  
$realmode = "";
  
$legal =  array("","w","r","x","-");
  
$attarray = preg_split("//",$mode);
   for(
$i=0;$i<count($attarray);$i++){
       if(
$key = array_search($attarray[$i],$legal)){
          
$realmode .= $legal[$key];
       }
   }
  
$mode = str_pad($realmode,9,'-');
  
$trans = array('-'=>'0','r'=>'4','w'=>'2','x'=>'1');
  
$mode = strtr($mode,$trans);
  
$newmode = '';
  
$newmode .= $mode[0]+$mode[1]+$mode[2];
  
$newmode .= $mode[3]+$mode[4]+$mode[5];
  
$newmode .= $mode[6]+$mode[7]+$mode[8];
   return
$newmode;
}
?>
some examples:

drwxr-xr-x => 755
drwxr-xr-x => 755
dr-xr-xr-x => 555
drwxr-xr-x => 755
drwxr-xr-x => 755
drwxr-xr-x => 755
drwxr-xr-x => 755
drwxrwxrwt => 776
drwxr-xr-x => 755
drwxr-xr-x => 755
lrwxrwxrwx => 777

used some of already posted code...


haasje at welmers dot net
27-Nov-2004 09:09

For recursive chmod'ing see the function below.
Only really usefull when chmod'ing a tree containing directories only, jet, since you don't want an executable bit on a regular file. Who completes the function so it's accepting strings like "g+w", and it's as usefull as unix "chmod -R" ? ;-)

<?php

function chmod_R($path, $filemode) {
   if (!
is_dir($path))
       return
chmod($path, $filemode);

  
$dh = opendir($path);
   while (
$file = readdir($dh)) {
       if(
$file != '.' && $file != '..') {
          
$fullpath = $path.'/'.$file;
           if(!
is_dir($fullpath)) {
             if (!
chmod($fullpath, $filemode))
                 return
FALSE;
           } else {
             if (!
chmod_R($fullpath, $filemode))
                 return
FALSE;
           }
       }
   }
 
  
closedir($dh);
  
   if(
chmod($path, $filemode))
     return
TRUE;
   else
     return
FALSE;
}
?>


PerfectWeb
23-Nov-2004 04:58

As noted by others below... 1) you cannot pass a string to chmod() as the mode, and 2) decimals work as well as octals for the mode.

If you need to come up with the mode on the fly (maybe based on user input) and want to use something like:

$mode = '0'.$owner.$group.$public;

you can use your $mode (which is a string) with chmod like this:

<?php
 
// octal mode in a string i.e. '0755'
 
$mode = '0'.$owner.$group.$public;

 
$mode_dec = octdec($mode);    // convert octal mode to decimal
 
chmod($filename, $mode_dec);
?>


fernando at gym-group dot com
12-Nov-2004 04:10

about chmod,
Problably you have a local server to simulate your scripts before upload them to the server. No matter if you use Apache under windows or IIS ,  a chmod instruction like chmod($filename,O777) may not work because windows does not handle that kind of permission's format.
So being in your local server, if you have a only read file and you try to erase, it will show that you dont have permissions even when you have already executed your chmod instrucction correctly. Just up the script it must work well in your internet server if it is a linux machine

sobre chmod,
Probablemente usas un servidor local para probar tus scripts antes de subirlos al servidor en internet. No importa si usas Apache bajo windows o IIS, una instruccion como chmod(nombre_archivo,O777) podr

 

 
  © 1996-2012 & Reporter.plmiejscao serwisieabonamentwarunki korzystaniaRSSkontakt