[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

intrappolare stderr in php exec function



Ciao a tutti, avrei la necessità di intrappolare lo standard error
ritornato dall'esecuzione di comandi esterni (external scripts) senza
però modificare il comando stesso. Mi spiego meglio con un esemmpio

<? php
$cmd_stderr = "cmd.err";
$cmd = 'ls foofile';
exec("$cmd 2>$cmd_stderr", $aOut, $errcode);
$stderr = file_get_contents($cmd_stderr);
if ($errcode) {
    echo "Errore nell'esecuzione del comando '$cmd':\n$stderr\n";
}
unlink ($cmd_stderr);
?>

riesce ad intrappolare lo standard output ma se lo script utilizza pipe
ho già qualche difficoltà:

<? php
$cmd_stderr = "cmd.err";
$cmd = 'ls foofile | grep .';
exec("$cmd 2>$cmd_stderr", $aOut, $errcode);
$stderr = file_get_contents($cmd_stderr);
if ($errcode) {
    echo "Errore nell'esecuzione del comando '$cmd':\n$stderr\n";
}
unlink ($cmd_stderr);
?>

Non c'è modo in php di redirigere temporaneamente lo stderr in una
variabile o un altro modo per intrappolare lo stderr nella esecuzione di
uno script esterno?

Grazie

Piviul


Reply to: