chmod

(PHP 4, PHP 5)

chmod — Изменяет режим доступа к файлу или каталогу

Описание

bool chmod ( string $filename , int $mode )

Осуществляет попытку изменения режима доступа файла или каталога, переданного в параметре filename на режим, переданный в параметре mode .

Обратите внимание, что значение параметра mode не переводится автоматически в восьмеричную систему счисления, поэтому строки (такие, как, например, "g+w") не будут работать должным образом. Чтобы удостовериться в том, что режим был установлен верно, предваряйте значение, передаваемое в параметре mode , нулем (0):

<?php
chmod
("/somedir/somefile"755);   // десятичное, неверный способ
chmod("/somedir/somefile""u+rwx,go+rx"); // строка, неверный способ
chmod("/somedir/somefile"0755);  // восьмеричное, верный способ
?>

Значение параметра mode состоит из трех восьмеричных чисел, определяющих уровень доступа для владельца файла, для группы, в которую входит владелец, и для других пользователей, соответственно. Число, определяющее уровень пользователя, может быть вычислено путем суммирования значений, определяющих права: 1 - доступ на выполнение, 2 - доступ на запись, 4 - доступ на чтение. Более подробно о системе прав в системах Unix вы можете узнать с помощью команд 'man 1 chmod' and 'man 2 chmod'.

<?php
// Доступ на запись и чтение для владельца, нет доступа для других
chmod("/somedir/somefile"0600);

// Доступ на запись и чтение для владельца, доступ на чтение для других
chmod("/somedir/somefile"0644);

// Полный доступ для владельца, доступ на чтение и выполнение для других
chmod("/somedir/somefile"0755);

// Полный доступ для владельца, доступ на чтение и выполнение для группы владельца
chmod("/somedir/somefile"0750);
?>

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Замечание: Текущим пользователем является пользователь, от имени которого выполняется PHP. Возможно, что этот пользователь будет отличаться от пользователя, под именем которого вы получаете доступ к командной оболочке или учетной записи FTP.

Замечание: Эта функция не применима для работы с удаленными файлами, поскольку файл должен быть доступен через файловую систему сервера.

Замечание: Когда безопасный режим включён, PHP проверяет имеет ли файл или директория, с которой вы работаете, такой же UID, как и выполняемый скрипт. Кроме того, вы не можете устанавливать SUID, SGID и "липкие" биты.

См.также описание функций chown() и chgrp().

Коментарии

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.
2005-04-01 07:20:47
http://php5.kiev.ua/manual/ru/function.chmod.html
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)
2005-07-11 00:23:49
http://php5.kiev.ua/manual/ru/function.chmod.html
Автор:
if you want to chmod directories too, use this 

<?php
$iterator 
= new RecursiveIteratorIterator(new RecursiveDirectoryIterator($pathname), RecursiveIteratorIterator::SELF_FIRST);

foreach(
$iterator as $item) {
   
chmod($item$filemode);
}
?>
2009-06-25 14:06:02
http://php5.kiev.ua/manual/ru/function.chmod.html
Автор:
BEWARE using quotes around the second parameter...

If you use quotes eg

chmod (file, "0644");

php will not complain but will do an implicit conversion to an int before running chmod. Unfortunately the implicit conversion doesn't take into account the octal string so you end up with an integer version 644, which is 1204 octal
2010-02-08 04:13:49
http://php5.kiev.ua/manual/ru/function.chmod.html
Автор:
BEWARE, a couple of the examples in the comments suggest doing something like this:

chmod(file_or_dir_name, intval($mode, 8));

However, if $mode is an integer then intval( ) won't modify it.  So, this code...

$mode = 644;
chmod('/tmp/test', intval($mode, 8));

...produces permissions that look like this:

1--w----r-T

Instead, use octdec( ), like this:

chmod(file_or_dir_name, octdec($mode));

See also: function.octdec
2010-09-02 12:46:49
http://php5.kiev.ua/manual/ru/function.chmod.html
Windows has a very different file permission model to Unix and integrates them only minimally.

On Windows, all this function can do is to change the "read only" flag, which is turned on if $mode & 0200 does not pass.
i.e. it only checks if u+w is missing from the bitmask, and if it is, it sets the read only flag.

The executable flag cannot be set as Windows determines it based on file extension.
The write flag cannot be set as Windows determines write access based on ACLs, which are not integrated here.
2020-03-02 21:50:12
http://php5.kiev.ua/manual/ru/function.chmod.html

    Поддержать сайт на родительском проекте КГБ