Файловая система
PHP Manual

popen

(PHP 4, PHP 5)

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

Описание

resource popen ( string $command , string $mode )

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

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

command

Команда

mode

Режим

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

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

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

Примеры

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

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

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

Пример #2 popen() example

<?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().

Замечание: В случае работы в безопасном режиме, вы можете запускать что-либо только в пределах safe_mode_exec_dir. В настоящее время по практическим причинам запрещено использование .. в качестве компонента пути к исполняемому файлу.

Внимание

В случае работы в безопасном режиме, строка с командой экранируется с помощью escapeshellcmd(). Таким образом echo y | echo x становится echo y \| echo x.

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


Файловая система
PHP Manual