popen

(PHP 4, PHP 5, PHP 7)

popenОткрывает файловый указатель процесса

Описание

popen ( string $command , string $mode ) : resource|false

Открывает поток к процессу, выполняемый при помощи форка команды, заданной в параметре command.

Список параметров

command

Команда

mode

Режим. Либо 'r' для чтения, либо 'w' для записи.

В Windows для popen() по умолчанию используется текстовый режим, т.е. любые символы \n, записанные в канал или прочитанные из него, будут преобразованы в \r\n. Если это нежелательно, можно принудительно использовать двоичный режим, установив для mode значение 'rb' и 'wb' соответственно.

Возвращаемые значения

Возвращает файловый указатель, идентичный возвращаемому функцией fopen(), за исключением того, что он односторонний (может быть использован только для чтения или записи) и должен быть закрыт при помощи pclose(). Этот указатель может быть использован с fgets(), fgetss() и fwrite(). Если в качестве режима указано 'r', файловый указатель аналогичен потоку вывода (STDOUT) команды, если же указано 'w', то файловый указатель аналогичен потоку ввода (STDIN) команды.

В случае возникновения ошибки возвращает false.

Примеры

Пример #1 Пример использования функции popen()

<?php
$handle 
popen("/bin/ls""r");
?>

Если команда для выполнения не может быть найдена, будет возвращён корректный ресурс. Это может выглядеть странно, но имеет смысл; это даёт вам возможность получить доступ к любому сообщению об ошибке, которое вернёт оболочка:

Пример #2 Пример использования функции popen()

<?php
error_reporting
(E_ALL);

/* Добавляем перенаправление, чтобы прочитать stderr. */
$handle popen('/path/to/executable 2>&1''r');
echo 
"'$handle'; " gettype($handle) . "\n";
$read fread($handle2096);
echo 
$read;
pclose($handle);
?>

Примечания

Замечание:

Если вам нужна двухсторонняя передача (в обе стороны одновременно), используйте proc_open().

Смотрите также

  • pclose() - Закрывает файловый указатель процесса
  • fopen() - Открывает файл или URL
  • proc_open() - Выполнить команду и открыть указатель на файл для ввода/вывода