Eseguire uno script Bash da php con passaggio di parametri
Gli script Bash possono semplificare l’implementazione di funzionalità legate al sistema operativo. In questo post viene mostrato come avviare l’esecuzione di tali script direttamente da PHP, passando dei parametri e ottenendo in output dei risultati da elaborare e/o visualizzare.
Per eseguire uno script Bash da PHP è sufficiente utilizzare la funzione shell_exec, la quale prende come unico parametro una stringa, che rappresenta il percorso assoluto dello script da eseguire e ritorna in uscita un’altra stringa che rappresenta l’output completo del comando:
string shell_exec ( string $cmd )
Si precisa che questa funzione non è abilitata se PHP è configurato in molalità protetta. Tale impostazione può essere modificata mettendo mani sul file di configurazione del proprio interprete PHP (php.ini). Considerando di avere uno script Bash nella directory /Users/rossi/script.sh con il seguente contenuto:
#!/bin/bash
echo "Ciao Mondo!"
è sufficiente creare una pagina PHP con il seguente contenuto:
< ?php
$result=shell_exec("/Users/rossi/script.sh");
echo($result);
? >
Si precisa che questo codice funzionerà su sistemi UNIX-like mentre su Windows sarà necessario chiamare esplicitamente bash.exe in questo modo:
$result=shell_exec("C:\bash-2.03\bash.exe /path/to/script/script.sh");
In tal modo lanciando l’interprete PHP l’output sarà “Ciao Mondo!”.
Uno script più complesso potrebbe, per esempio, prendere due interi come parametri e calcolare la somma, il prodotto e la media come illustrato di seguito:
#!/bin/bash
a=$1
b=$2
echo 'somma = '$((a+b))
echo 'prodotto = '$((a*b))
echo 'media = '$(((a+b)/2))
e sarebbe richiamato da PHP con il seguente codice:
< ?php
$result=shell_exec("/Users/rossi/script.sh 2 6");
echo($result);
? >
restituendo il seguente output:
somma = 8 prodotto = 12 media = 4