PHPBlog.it

Una shell in PHP

PHP purtroppo non fornisce di default una shell per la prova dei comandi, come fanno ad esempio python e ruby (con irb).

Nella rete per fortuna si trovano delle buone alternative destinate a chi può interessare uno strumento simile.

Oggi ho trovato questa compatta soluzione in una riga (due, se si considera quella per indicare la posizione dell’interprete); ecco il codice:

#!/usr/bin/php

O in forma più leggibile

#!/usr/bin/php
while (1)
{
fputs ( STDOUT, "\n\-PHP$ ");
eval ( fgets ( STDIN ) );
}
?>

Questo piccolo script fa nell’ordine:

#!/usr/bin/php

Indica dove risiede l’interprete.

while (1)

Apre un loop while infinito, in quanto “1″ è una condizione sempre vera. Si poteva scrivere anche while (true).

fputs ( STDOUT, "\n\-PHP$ ");

Stampa un bel prompt per la nostra shell. STDOUT è la “destinazione” dove vengono inviati i dati con fputs.

eval ( fgets( STDIN ) );

fgets legge il codice da STDIN (il buffer di input predefinito, leggibile come un file), ed eval prende l’input, lo trasforma in codice e lo esegue. Semplice no?

Commenti

  • Questo articolo è stato segnalato su ZicZac.it….

  • inuyaksa scrive:

    Bella idea avere una console di test per PHP!

    Ti ho preparato una versione per Windows, che va lanciata tramite php -f [nomefile] :

    [?php
    while (1) {
    fputs ( STDOUT, "\n\-PHP$ ");
    $line = fgets ( STDIN );
    if (substr($line,0,5) != 'exit;') {
    eval ($line);
    } else {
    exit;
    }
    }
    ?]

    Rispetto alla tua versione, questa è “moddata”, perché per uscire basta scrivere “exit;”.

  • Davide Borsatto scrive:

    Già, sulla mia servono le parentesi..:)

  • Lascia un Commento

    *