resource proc_open       ( string $cmd      , array $descriptorspec      , array &$pipes      [, string $cwd      [, array $env      [, array $other_options     ]]] )

proc_open Выполнить команду и открыть указатель на файл для ввода/вывода

cmd

Команда для выполнения

descriptorspec

Массив, ключи которого представляют собой номер дескриптора, а значение описывает, как PHP должен передать этот дескриптор дочернему процессу. 0 - stdin, 1 - stdout и 2 - stderr.

Каждый элемент может быть:

  • Массивом, описывающим канал (pipe) для передачи процессу. Первый элемент - это дескриптор типа, второй - настройка для выбранного типа. Возможные типы: pipe (второй элемент либо r для передачи процессу стороны канала для чтения, либо w для передачи стороны записи) и file (второй элемент - имя файла).
  • Ресурсом потока, представляющим дескриптор файла (например, открытый файл, сокет, STDIN).

Номера дескрипторов не ограничены только 0, 1 и 2 - вы можете назначить любой действительный номер дескриптора и он будет передан дочернему процессу. Это позволяет скрипту взаимодействовать с другими скриптами, работающими, как параллельные процессы. В частности, таким образом можно передавать данные, требующие защиты, в программы вроде PGP, GPG и openssl более безопасно. Также это может оказаться полезным для чтения статусной информации, предоставляемой этими программами на вспомогательных файловых дескрипторах.

pipes

Будет задан массивом указателей на файлы, соответствующие созданным каналам передачи данных PHP.

cwd

Рабочая директория команды. Это должен быть абсолютный путь к директории или NULL, если требуется использовать директорию по умолчанию (рабочая директория текущего процесса PHP).

env

Массив переменных окружения для запускаемой команды или NULL, если требуется использовать то же окружение, что и у текущего PHP-процесса.

other_options

Позволяет задать дополнительные настройки. На данный момент поддерживаются следующие настройки:

  • suppress_errors (только для Windows): при установке в TRUE не будут показываться ошибки, возникающие в ходе работы функции
  • bypass_shell (только для Windows): при установке в TRUE процесс будет запущен в обход оболочки cmd.exe