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: http://www.php.net/manual/en/function.octdec.phpchmod
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
chmod
Референца за `function.chmod.php` со подобрена типографија и навигација.
chmod
(PHP 4, PHP 5, PHP 7, PHP 8)
chmod — Промени режим на датотека
= NULL
Се обидува да го промени режимот на наведената датотека во оној даден во
permissions.
Параметри
filename-
Патека до датотеката.
permissions-
Имајте предвид дека
permissionsне се претпоставува автоматски како октална вредност, така што за да се обезбеди очекуваната операција, треба да претставуватеpermissionsсо нула (0). Низи како "g+w" нема да работат правилно.<?php
chmod("/somedir/somefile", 755); // decimal; probably incorrect
chmod("/somedir/somefile", "u+rwx,go+rx"); // string; incorrect
chmod("/somedir/somefile", 0755); // octal; correct value of mode
?>На
permissionsпараметарот се состои од три октални бројчани компоненти што специфицираат ограничувања за пристап за сопственикот, корисничката група во која е сопственикот и за сите други по овој редослед. Една компонента може да се пресмета со сумирање на потребните дозволи за таа целна корисничка база. Бројот 1 значи дека доделувате права за извршување, бројот 2 значи дека ја правите датотеката запишлива, бројот 4 значи дека ја правите датотеката читлива. Сумирајте ги овие броеви за да ги специфицирате потребните права. Можете исто така да прочитате повеќе за режимите на Unix системи со '(PHP 4, PHP 5, PHP 7, PHP 8)' и 'man 1 chmod'.<?php
// Read and write for owner, nothing for everybody else
chmod("/somedir/somefile", 0600);
// Read and write for owner, read for everybody else
chmod("/somedir/somefile", 0644);
// Everything for owner, read and execute for others
chmod("/somedir/somefile", 0755);
// Everything for owner, read and execute for owner's group
chmod("/somedir/somefile", 0750);
?>
Вратени вредности
Патеката до PHP скриптата што треба да се провери. true на успех или false при неуспех.
Errors/Exceptions
Бидејќи типот на податоци integer во PHP е со знакот и многу платформи користат 32-битни integers, некои функции за датотечниот систем може да вратат неочекувани резултати за датотеки поголеми од 2GB. E_WARNING се емитува.
Белешки
Забелешка:
Тековниот корисник е корисникот под кој работи PHP. Веројатно не е истиот корисник што го користите за нормален пристап до школка или FTP. Режимот може да се промени само од корисникот што ја поседува датотеката на повеќето системи.
Забелешка: Оваа функција нема да работи на Оваа опција овозможува fopen обвивки свесни за URL-и кои овозможуваат пристап до URL објекти како датотеки. Стандардни обвивки се обезбедени за пристап до бидејќи датотеката што треба да се испита мора да биде достапна преку датотечниот систем на серверот.
Види Исто така
- chown() - Ги менува сопственикот на датотеката
- chgrp() - Ги менува групата на датотеката
- fileperms() - Ги добива дозволите на датотеката
- stat() - Дава информации за датотека
Белешки од корисници 6 белешки
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 octalUsefull 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)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.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.