PHP bietet einige Funktionen an um Dateien auszuführen. Das Problem von z.B System() und exec() ist allerdings, dass nicht der komplette Text zurückgegeben wird. Hier ist proc_open() wesentlich genauer. Wird zum Beispiel unter Linux eine Datei ausgeführt die nicht vorhanden und nicht die benötigte Berechtigungen besitzt, werden die entsprechenden Fehlermeldungen nur über proc_open() "ausgegeben".
Ich habe die Funktion std auf php.net gefunden, ist aber mittlerweile aus den Kommentaren rausgeruscht, deswegen hier der die Funktion.
function std($cmd) {
$back="";
$io = array();
$p = proc_open($cmd,
array(1 => array('pipe', 'w'),
2 => array('pipe', 'w')),
$io);
/* Read output sent to stdout. */
while (!feof($io[1])) {
$back .= htmlspecialchars(fgets($io[1]),
ENT_COMPAT, 'UTF-8');
}
/* Read output sent to stderr. */
while (!feof($io[2])) {
$back .= htmlspecialchars(fgets($io[2]),
ENT_COMPAT, 'UTF-8');
}
fclose($io[1]);
fclose($io[2]);
proc_close($p);
return $back;
}