Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка PHP 2008.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать
☆

10.4 Запуск внешних программ

  • string system(string $command

[,int& return_var])

Функция запускает внешнюю программу, имя которой передано первым параметром, и выводит результат работы программы в выходной поток, т. е. в браузер. Если функции передан также второй параметр – переменная (именно переменная, а не константа!), то в нее помещается код возврата вызванного процесса. Это требует от PHP ожидания завершения запущенной программы. Выходной поток данных программы направляется в браузер. Если нужно этого избежать, воспользуйтесь функциями popen() или exec(). Если же вы, наоборот, нужно, чтобы выходные данные запущенной программы попали прямиком в браузер и никак при этом не исказились (например, вызывается программа, выводящая в стандартный выходной поток какой-нибудь GIF-рисунок), в этом случае в самый раз будет функция PassThru().

  • string exec(string $command [,list& $array] [,int& $return_var])

Функция запускает указанную программу или команду, но ничего не выводит в браузер. Вместо этого функция возвращает последнюю строку из выходного потока запущенной программы и, если задан параметр $array (который обязательно должен быть переменной), то он заполняется списком строк в выходном потоке – по одной строке на элемент. Если массив уже содержал какие-то данные перед вызовом exec(), новые строки просто добавляются в его конец, а не заменяют старое содержимое массива. При задании параметра-переменной $return_var код возврата запущенного процесса будет помещен в эту переменную. Функция exec() тоже дожидается окончания работы нового процесса и только потом возвращает управление в PHP-программу.

  • string EscapeShellCmd(string $command)

Нельзя допускать возможности передачи данных из браузера пользователя (например, из формы) в функции system() и exec(). Если это все же нужно сделать, то данные должны быть соответствующим способом обработаны: например, можно защитить все специальные символы обратными слэшами, и т. д. Это и делает функция EscapeShellCmd(). Чаще всего ее применяют в таком контексте:

system("cd ".EscapeShellCmd($to_directory));

Здесь переменная $to_directory пришла от пользователя – например, из формы или Cookies.

  • string PassThru(string $command

[,int& $return_var])

Функция запускает указанный в ее первом параметре процесс и весь его вывод направляет прямо в браузер пользователя, один-в-один. Она применяется, если воспользоваться какой-нибудь утилитой для генерации изображений «на лету», оформленной в виде отдельной программы.

Пример:

Header("Content-type: image/jpeg");

PassThru("cat my_image.jpg");

Функция Header() сообщает браузеру пользователя, что данные поступят в графическом формате JPEG, а последующий вызов утилиты cat с параметром – именем файла с рисунком – заставляет систему «распечатать» файл в браузер пользователя.

Тема 11 Работа с датами и временем,

посылка писем через PHP

11.1 Представление времени в формате timestamp

11.2 Работа с датами, григорианский календарь

11.3 Посылка писем через PHP