array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'es', ), 'this' => array ( 0 => 'function.popen.php', 1 => 'popen', ), 'up' => array ( 0 => 'ref.filesystem.php', 1 => 'Funciones del Sistema de Archivos', ), 'prev' => array ( 0 => 'function.pclose.php', 1 => 'pclose', ), 'next' => array ( 0 => 'function.readfile.php', 1 => 'readfile', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'es', 'path' => 'reference/filesystem/functions/popen.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4, PHP 5, PHP 7, PHP 8)
popen — Abre un proceso de un puntero a un fichero
Abre una tubería hacia un proceso ejecutado bifurcando el comando dado
por command
.
command
El comando
mode
El modo
Devuelve un puntero al fichero idéntico al devuelto por fopen(), excepto que es uni-direccional (sólo se puede usar para lectura o escritura) y debe ser cerrado con pclose(). Este puntero se puede usar con fgets(), fgetss(), y fwrite(). Cuando el modo es 'r', el puntero al fichero devuelto iguala al STDOUT del comando, cuando el modo es 'w', el puntero al fichero devuelto iguala al STDIN del comando.
Si se produjo un error, devuelve false
.
Ejemplo #1 Ejemplo de popen()
<?php
$gestor = popen("/bin/ls", "r");
?>
Si el comando a ejecutar no puede ser encontrado, se devuelve un recurso válido. Esto puede parecer extraño, pero tiene sentido; permite el acceso a cualquier mensaje de error devuelto por el intérprete de comandos:
Ejemplo #2 Ejemplo de popen()
<?php
error_reporting(E_ALL);
/* Añade redirección, por lo que podemos obtener stderr. */
$gestor = popen('/ruta/al/ejecutable 2>&1', 'r');
echo "'$gestor'; " . gettype($gestor) . "\n";
$leer = fread($gestor, 2096);
echo $leer;
pclose($gestor);
?>
Nota:
Si está buscando un soporte bi-direccional (dos-vías), use proc_open().