В этой главе описываются функции, взаимодействующие с операционной системой (ОС) и оборудованием, на котором она работает. Большая часть этих функций связана с файлами, другие взаимодействуют с командными оболочками, позволяющими выполнять программы. Кроме того, в настоящей главе затрагиваются вопросы отладочных функций, возвращающих информацию о PHP.
9.1. Файлы
Описанные в этой главе функции помогают манипулировать файлами или возвращают информацию о них. Все они включают команды, которые выполняются в командных оболочках Unix или Windows. Если функции, описываемые здесь, ссылаются на файл или каталог, можно указывать имя файла, который находится в том же каталоге, что и сам сценарий. При этом можно не задавать абсолютный или относительный путь. Каталоги вида . и .. допустимы как в Unix, так и в Windows. Кроме того, на Windows-машинах можно задавать имя устройства. Символ обратной косой черты является ограничителем каталогов и имен файлов при работе под управлением Windows, но и обычные косые тоже интерпретируются корректно.
boolean chdir(string directory)
При запуске сценария PHP его путем по умолчанию является путь к каталогу, в котором находится сам сценарий, т.е. если полный путь к сценарию будет таким: /users/leon/public_html/somescript.php, то все пути, с которыми он работает, берутся относительно /users/leon/public_html/. Значение пути по умолчанию можно изменить с помощью функции chdir (листинг 9.1), которая возвращает значение TRUE, если изменение сделано, и значение FALSE, если сценарию не удается поменять каталог. 

Листинг 9.1. Функция chdir

<?php
if(chdir("/tmp")) {
print("текущий каталог? /tmp");
}
else
{
print("HeB03Mo;KHO поменять на /tmp");
}

boolean chgrp(string filename, string group)
В функции chgrp (листинг 9.2) заложена идея Unix, заключающаяся в изменении группы, к которой принадлежит файл. При успешном исходе возвращается значение TRUE. Если невозможно изменить группу, возвращается значение FALSE. Под управлением Windows эта функция всегда возвращает значение TRUE и возвращает файл в неизмененном виде. Функция chgrp имеет две родственные функции - chmod и chown. Если необходимо определить группу, к которой принадлежит файл в данный момент, можно воспользоваться функцией filegroup. Аналогичные команды Unix можно найти на соответствующей странице справки (man-странице) ОС Unix.

| Листинг 9.2. Функция chgrp_
<?php
if(chgrp("log.txt", "editors"))
{
print("log.txt поменял свою группу на editors");
}
else
{
print("log.txt не поменял свою группу на editors ");
}
?>

boolean chmod(string filename, integer mode)
Функция chmod (листинг 9.3) устанавливает права доступа к данному файлу в ОС Unix на основе выбранного режима, который интерпретируется аналогично командам Unix, за исключением того, что он не преобразуется в восьмеричное значение. Если он не имеет префикса 0, chmode рассматривается как десятичное число. В Unix права доступа для владельца, группы пользователей и других пользователей задаются соответственно тремя восьмеричными числами. Для того чтобы комбинировать привилегии, можно добавлять режимы. Например, для того чтобы получить права на чтение и выполнение файла, необходимо воспользоваться режимом 5. Режимы файлов приведены в табл. 9.1. Справку можно получить и на man-странице команды chmod в системе Unix.
Операционная система
Под управлением ОС Windows функция chmod имеет ограниченное использование. Режимы, описанные в табл. 9.2, специфицированы и компанией Microsoft. Ими можно манипулировать с помощью операции "побитового ИЛИ" (|), но практически реальное значение имеет только разрешение на запись. Все файлы в ОС Windows являются читаемыми, а то, является ли файл исполняемым, непосредственно определяется из расширения файла.
Операционная система