|
użytkowników online: 63
|
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
|
|
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 Opisbool 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):
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'.
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 Notesmemp
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
computerguru at spymac dot com
07-Apr-2005 12:05
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
$mode = '0'.$owner.$group.$public;
$mode_dec = octdec($mode); 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
|