Eseguire comandi con PHP e Symfony Process
Symfony è uno dei più apprezzati framework per PHP.
E' composto da diversi componenti che possono essere installati anche separatamente.
In questo articolo vediamo come eseguire comandi di sistema con PHP usando il componente Symfony Process.
Prima di tutto installiamolo con composer:
composer require symfony/process
Qui sotto un primo esempio in cui usiamo mustRun, che al contrario del semplice run solleva l'eccezione ProcessFailedException in caso di errore:
include_once 'vendor/autoload.php';
use Symfony\Component\Process\Exception\ProcessFailedException;
use Symfony\Component\Process\Process;
$process = new Process(['ls', '-lsa']);
try {
$process->mustRun();
echo $process->getOutput();
} catch (ProcessFailedException $exception) {
echo $exception->getMessage();
}
Un altro esempio utile è quello in cui mandiamo l'output in tempo reale:
include_once 'vendor/autoload.php';
use Symfony\Component\Process\Process;
$process = new Process(['ls', '-lsa']);
$process->run(function ($type, $buffer) {
if (Process::ERR === $type) {
echo 'ERR > '.$buffer;
} else {
echo 'OUT > '.$buffer;
}
});
Come potete vedere dalla documentazione linkata sopra, ci stanno svariati altri esempi di utilizzo.
Il componente è molto completo e copre quasi tutte le esigenze del caso.
Enjoy!
php symfony process composer
Commentami!