Взаимодействие с операционной системой

May 4, 2010 by admin Комментировать »

Взаимодействие с операционными системами (под это понятие по идее попадает и работа с файловой системой) может заключаться в вызове системных команд (shell), запуске внешних для РНР приложений и многом другом, вплоть до взаи­модействия с внешними приложениями через СОМ и .NET (на Windows-плат­форме).

Для выполнения внешних команд и приложений су*цествует множество встро­енных функций, которые можно найти в подробной официальной документации. Здесь мы рассмотрим только некоторые из них в качестве примера возможностей РНР

Такие функции бывают полезны для удобного удаленного администрирования Web-сервера через Web-интерфейс или для совместной работы со сторонними при­ложениями.

Выполнить заданную программу или команду можно, например, с помощью функции exec (). Она запускает заданную программу или команду без вывода ее на экран и возвращает последнюю строку ее выходных данных. Формат записи exec О следующий.

string exec ( string command [, array &output [, int £treturn_var]] )

Здесь параметр command принимает наименование команды или приложения, которое необходимо запустить. Опциональный массив output хранит в себе каж­дую строку возвращаемого из внешней программы ответа, а return_var может со­держать в себе статус выполненной команды.

Например, можно воспользоваться системной функцией Linux uptime, которая сообщает время работы сервера, прошедшее с последней перезагрузки, и некоторую сопутствующую информацию.

<?php

echo exec("uptime"); ?>

В результате выполнения скрипта на экране может появиться строка примерно такого содержания.

00:38:54 up 3:14, 3 users, load average: 0.19, 0.05, 0.01

Похожую строку можно будет увидеть, запустив из консоли Linux команду uptime.

С выполнением данной команды в Windows могут быть проблемы, однако это связано прежде всего с самой командой uptime, так как функция exec () справ­ляется и с запуском приложений под Windows. Вот пример выполнения команды DOS dir.

<?php

exec("dir c:\ ", $dir); foreach ($dir as $key => $value) { echo $value . "<br>"?

}

?>

Здесь все строки вывода при выполнении команды заносятся в массив $dir, а затем выводятся на экран с помощью foreach. При выводе данных на экран не­обходимо учитывать кодировку, в которой они возвращаются.

Для запуска приложений или команд с автоматическим выводом результатов на экран наиболее подходит функция system (). Ее синтаксис следующий.

string system ( string command [, int Screturn_var] )

Здесь параметр command означает команду, a return_var — контейнер для за­писи статуса выполнения команды.

С помощью функции system () можно также запускать внешние команды и при­ложения. Как и было обещано ранее, приводим пример удаления файла в Windows, используя DOS-команду del.

<?php

system("del garbage.txt"); ?>

Особенностью данной функции является ее способность к автоматическому вы­воду результатов выполнения команды на экран. Для вывода на экран листинга те­кущего каталога можно выполнить следующий код для Linux.

<?php

system("ls"); ?>

И для Windows: <?php

system("dir"); ?>

Для того чтобы выполнить системную команду в РНР. не обязательно использо­вать функции. Зачастую бывает достаточно заключить команду в обратные апост­рофы, например:

<?php

$output = ‘dir’; echo $output; ?>

Обратный апостроф на русской раскладке qwerty-клавиатуры находится под клавишей <^Esc> вместе с тильдой (~) и буквой "Ё".

При работе с системными вызовами необходимо быть предельно внимательны­ми! Выполнение системных команд и запуск внешних программ дает много воз­можностей для увеличения мощности Web-приложения, однако таит в себе опас­ность запуска вредоносных программ и команд с необратимыми последствиями.

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

Оставить комментарий

микросхемы мощности Устройство импульсов питания пример приемника провода витков генератора выходе напряжение напряжения нагрузки радоэлектроника работы сигнал сигнала сигналов управления сопротивление усилитель усилителя усиления устройства схема теория транзистора транзисторов частоты