(PHP 4, PHP 5, PHP 7, PHP 8)
passthru — Ejecuta un programa externo y muestra el resultado sin procesar
passthru() es similar a la función
exec() ya que ambas ejecutan el comando
command
. Si el argumento
result_code
está presente,
el código de estado de respuesta UNIX será colocado allí. Esta función
debe preferirse a las funciones exec()
o system() cuando el resultado esperado es de tipo
binario y debe pasarse sin procesar a un navegador.
Un uso clásico de esta función es la ejecución
de la utilidad pbmplus que puede devolver una imagen. Al establecer el tipo de contenido (Content-Type) a image/gif
y luego llamar a pbmplus para obtener una imagen gif, se pueden crear scripts PHP que devuelven imágenes.
command
El comando a ejecutar.
result_code
Si el argumento result_code
está
presente, el estado devuelto por el comando Unix será colocado
en esta variable.
Emite una advertencia E_WARNING
si passthru() no puede
ejecutar el comando command
.
Genera una excepción ValueError si command
está vacío o contiene caracteres nulos.
Versión | Descripción |
---|---|
8.0.0 |
Si command está vacío o contiene caracteres nulos,
passthru() ahora genera una excepción ValueError.
Anteriormente, se emitía una advertencia E_WARNING y se devolvía false .
|
Si se va a permitir que datos provenientes del usuario sean enviados a esta función, habría que utilizar escapeshellarg() o escapeshellcmd() para asegurarse que el usuario no intenta engañar al sistema para que ejecute comandos arbitrarios.
Nota:
Si ejecutamos un programa con esta función y queremos dejarlo ejecutándose en segundo plano, hay que asegurarse que la salida del mismo es redireccionada a un fichero u otro flujo de salida. No hacerlo hará que PHP se congele hasta que termine la ejecución del programa.