popen

(PHP 4, PHP 5, PHP 7, PHP 8)

popenCrea un puntero de archivo de proceso

Descripción

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

Crea un puntero de archivo de proceso, ejecutado mediante un fork de la orden proporcionada por el argumento command.

Parámetros

command

La orden

mode

El modo. Puede ser 'r' para lectura, o 'w' para escritura.

En Windows, popen() utiliza el modo texto por defecto, es decir, todo carácter \n escrito o leído del pipe será traducido a \r\n. Si esto no es deseado, el modo binario puede ser forzado definiendo el mode a 'rb' y 'wb', respectivamente.

Valores devueltos

Devuelve un puntero de archivo idéntico al devuelto por fopen(), excepto que será unidireccional (solo lectura, o solo escritura), y debe ser cerrado mediante pclose(). Este puntero puede ser utilizado con fgets(), fgetss() y fwrite(). Cuando el modo es 'r', el puntero de archivo devuelto equivale al STDOUT de la orden, y cuando el modo es 'w', el puntero de archivo devuelto equivale al STDIN de la orden.

Si ocurre un error, la función devolverá false.

Ejemplos

Ejemplo #1 Ejemplo con popen()

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

Si la orden a ejecutar no ha podido ser encontrada, se devolverá un recurso válido. Esto puede parecer extraño, pero es práctico. Esto permite acceder a los mensajes de error que han sido devueltos por el Shell:

Ejemplo #2 Ejemplo con popen()

<?php
error_reporting
(E_ALL);

/* Añade una redirección para que pueda leer stderr. */
$handle = popen('/path/to/executable 2>&1', 'r');
echo
"'$handle'; " . gettype($handle) . "\n";
$read = fread($handle, 2096);
echo
$read;
pclose($handle);
?>

Notas

Nota:

Si se desea un soporte bidireccional (two-way), utilice la función proc_open().

Ver también

  • pclose() - Cierra un proceso de un puntero a un fichero
  • fopen() - Abre un fichero o un URL
  • proc_open() - Ejecuta un comando y abre los punteros de ficheros para las entradas / salidas