9.6. Командные оболочки
В этом разделе описываются функции, каким-либо образом взаимодействующие с командной оболочкой. Большинство из них запускает выполнение других программ, а две из них предназначены для считывания или записи значений переменных среды.
string exec(string command, array output, integer return)
Функция exec (листинг 9.94) выполняет команду, указанную в аргументе command, как если бы она была задана непосредственно в командной оболочке. Функция exec ничего не отсылает в браузер, но возвращает последнюю строку вывода, сопровождающего выполнение команды. При указании необязательного аргумента output PHP добавляет выводимые строки в аргумент output. При указании необязательного аргумента return PHP заносит в него значение, возвращаемое командой. В аргументе command крайне опасно помещать пользовательскую информацию. Пользователи могут передавать значения в виде полей, позволяющих им выполнять свои собственные команды, пользуясь вашим Web-сервером. Если необходимо выполнить команду, введенную пользователем, полученную информацию необходимо передавать через функцию escapeshellcmd. Сравните эту функцию с функциями passthru, shell_exec и system.
j Листинг 9.94. Функция exec_
<?php
// Получить содержимое корневого каталога устройства C $lastLine = exec("ls -l /", $allOutput, $returnValue); print(" Последняя строка: $lastLine<br>n"); print("Вeсь вывод:<br>n"); foreach($allOutput as $line)
{
print("$line<br>n");
}
print("<br>n");
print(" Возвращаемое значение: $returnValue<br>n");
string getenv(string variable)
Функция getenv (листинг 9.95) возвращает значение заданной переменной среды или FALSE в случае ошибки. PHP размещает все переменные среды в массиве _ENV, поэтому эта функция полезна только в тех редких случаях, когда переменные среды изменяют свои значения во время выполнения сценария. Если необходимо изменить значения переменной среды, используется функция putenv.
j Листинг 9.95. Функция getenv
<?php
print(getenv("PATH"));
?>
string passthru(string command, integer return)
Функция passthru аналогична функциям exec и system. Функция passthru выполняет команду, указанную в аргументе command, как если бы она была задана непосредственно в командной оболочке. При указании необязательного аргумента return PHP заносит в него возвращаемое командой значение. Функция passthru возвращает весь вывод, который отправляется в браузер. Вывод отправляется в виде двоичных данных. Это очень удобно, если необходимо запустить команды оболочки, создающий двоичный файл (например, изображение).
В аргументе command крайне опасно помещать пользовательскую информацию. Пользователи могут передавать значения в виде полей, позволяющих им выполнять свои собственные команды с помощью вашего Web-сервера. Если необходимо выполнить команду, введенную пользователем, полученную информацию необходимо передавать через функцию escapeshellcmd. Сравните эту функцию с функциями exec, shell_exec и system.
integer proc_close(resource process)
Функция proc_close используется для закрытия процесса, открытого функцией proc_open. Она возвращает значение, возвращенное функцией закрытия файла низкого уровня, которое обычно равно 0, если закрытие прошло успешно, и 1, если возникла ошибка.
array proc_get_status(resource process)
Функция proc_get_status возвращает информацию о состоянии открытого процесса в виде массива. Элементы этого массива приведены в табл. 9.26.
boolean proc_nice(integer level)
Функция proc_nice задает приоритет текущего процесса. Если сценарий PHP выполняется под управлением суперпользователя, эта функция может только уменьшать приоритет.
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
PHP. Операционная система. Часть Двадцать Седьмая.
28-12-2009
<< Предыдущая статья | Следующая статья >> |
PHP. Операционная система. Часть Двадцать Шестая. | PHP. Операционная система. Часть Двадцать Восьмая. |