Eseguire una funzione da command line in CodeIgniter

ATTENZIONE! Il post ha più di 2 anni e le informazioni contenute potrebbero essere obsolete (ad esempio a causa di un aggiornamento di versione rispetto agli elementi descritti o links modificati da siti esterni).

Con CodeIgniter è possibile eseguire un metodo di un controller tramite command line, sfruttando tutte le funzionalità integrate compreso il routing.

Ad esempio avendo un controller con questa struttura:

class Persone extends CI_Controller
{
    public function saluta($nome = '?'){  
        echo 'Ciao '.$nome;
    }
}

sarà possibile richiamare la funziona "saluta" dall'url www.miosito.com/persone/saluta/Marco .

Per eseguire la stessa funzione tramite linea di comando si può fare nel seguente modo.
Dopo aver aperto la linea di comando spostarsi all'interno della directory del progetto:

cd C:\xampp\htdocs\vhosts\mioprogetto

Eseguire quindi il file index.php passando come parametri il controller, la funzione ed eventuali variabili:

php index.php persone saluta Marco

Che produrrà l'output:

Ciao Marco

CodeIgniter mette a disposizione anche una comoda funzione per aumentare la sicurezza.
Se vogliamo che lo script sia accessibile SOLO da cmd si può modificare la funzione così:

class Persone extends CI_Controller
{
    public function saluta($nome = '?'){
  if (!$this->input->is_cli_request()) {
   echo "Accessibile solo da command line";
   return;
  }
  
  echo 'Ciao '.$nome;
    }
}

In questo modo le richieste tramite URL verranno bloccate.

Se come risutato viene restituito un template html completo è possibile che sia necessario modificare il parametro di configurazione uri_protocol da:

$config['uri_protocol'] = "REQUEST_URI";

in

$config['uri_protocol'] = "AUTO";

 

Server dedicato

Condividi questo post


Commenti