Eseguire comandi con PHP e Symfony Process

Mattepuffo's logo
Eseguire comandi con PHP e Symfony Process

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!


Condividi

Commentami!