Home Linux Eeguire script bash da php

Menu Principale

Informatica

Eeguire script bash da php
Sabato 03 Dicembre 2011 08:55

Leggi l'articolo di partenza

 

 

Gli script Bash possono semplificare l’implementazione di funzionalità legate al sistema operativo. Octavia Andreea Anghel di DevX propone un tutorial in cui viene illustrato come avviare l’esecuzione di tali script direttamente da PHP, passando dei parametri e ottenendo in output dei risultati da elaborare e/o visualizzare. Come prima cosa è necessario procurarsi una shell Bash per il proprio sistema operativo preferito. La maggior parte dei sistemi UNIX-like, tra cui GNU/Linux e Mac OS X, ne integrano uno, mentre per Windows è necessario scaricarla e installarla scompattando l’archivio e aggiungendo il percorso in cui è stato memorizzato bash.exe nella variabile d’ambiente PATH. 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’altrastringa che rappresenta l’output completo del comando. Il prototipo è riportato di seguito:

  1. string shell_exec(string $cmd)

Si precisa che questa funzione non è abilitata se PHP è configurato in safe mode. Tale impostazione può essere modificata mettendo mani a php.ini, il file di configurazione del proprio interprete PHP. Considerando di avere uno script Bash nella directory /Users/argesino/script.sh con il seguente contenuto:

  1. #!/bin/bash
  2. echo "Hello World!"

è sufficiente creare una pagina PHP con il seguente contenuto:

  1. < ?php
  2. $result=shell_exec("/Users/argesino/script.sh");
  3. echo($result);
  4. ? >

Si precisa che questo codice funzionerà su sistemi UNIX-like mentre su Windows sarà necessario chiamare esplicitamente bash.exe in questo modo:

  1. $result=shell_exec("C:bash-2.03bash.exe /path/to/script/script.sh");

In tal modo lanciando l’interprete PHP l’output sarà “Hello World!”. 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:

  1. #!/bin/bash
  2. a=$1
  3. b=$2
  4. echo 'sum = '$((a+b))
  5. echo 'product = '$((a*b))
  6. echo 'average = '$(((a+b)/2))

e sarebbe richiamato da PHP con il seguente codice:

  1. < ?php
  2. $result=shell_exec("/Users/argesino/script.sh 2 4");
  3. echo($result);
  4. ? >

restituendo il seguente output:

  1. sum = 6 product = 8 average = 3

 

Ultimo aggiornamento Domenica 04 Dicembre 2011 14:51
 
Copyright © 2012 Scuola, Computer e dintorni. Tutti i diritti riservati.
Joomla! è un software libero rilasciato sotto licenza GNU/GPL.