Хотя в Интернете есть некоторые сообщения о том, что PHP chmod действительно сможет устанавливать флаги атрибутов Windows (по крайней мере, флаг только для чтения), я вообще не смог воспроизвести это.
Таким образом, вы должны использовать команду attrib
.
READ-ONLY в Windows и * nix
Вот код для установкифайл только для чтения, который будет работать в Windows и * nix:
// set file READ-ONLY (Windows & *nix)
$file = 'path/to/file.ext';
if(isset($_SERVER['WINDIR'])) {
// Host OS is Windows
$file = str_replace('/', '\\', $file);
unset($res);
exec('attrib +R ' . escapeshellarg($file), $res);
$res = $res[0];
}else{
// Host OS is *nix
$res = chmod($file, 0444);
}
//$res contains result string of operation
Подсказки:
Замена '/' на '\' важна, так как команда оболочки (attrib
) не являетсястоль же терпимо к слешам, как и PHP.
$ res не установлен в части Windows, потому что exec () добавляет любое существующее значение.
HIDDEN в Windows
Если вы хотите скрыть файл, это, вероятно, будет задачей только для Windows:
// set file HIDDEN (Windows only)
$file = 'path/to/file.ext';
$file = str_replace('/', '\\', $file);
unset($res);
exec('attrib +H ' . escapeshellarg($file), $res);
$res = $res[0];
//$res contains result string of operation