popen
(PHP 4, PHP 5, PHP 7)
popen — Открывает файловый указатель процесса
Описание
$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($handle, 2096);
echo $read;
pclose($handle);
?>
Примечания
Замечание:
Если вам нужна двухсторонняя передача (в обе стороны одновременно), используйте proc_open().
Смотрите также
- pclose() - Закрывает файловый указатель процесса
- fopen() - Открывает файл или URL
- proc_open() - Выполнить команду и открыть указатель на файл для ввода/вывода