GNU/Linux >> Linux Esercitazione >  >> Linux

Come posso eseguire il codice PHP dalla riga di comando?

Se hai intenzione di eseguire PHP nella riga di comando, ti consiglio di installare phpsh, una shell PHP decente. È molto più divertente.

Comunque, il php command offre due opzioni per eseguire il codice dalla riga di comando :

-r <code>        Run PHP <code> without using script tags <?..?>
-R <code>        Run PHP <code> for every input line

Puoi usare php switch -r di come tale:

php -r 'echo function_exists("foo") ? "yes" : "no";'

Il comando PHP di cui sopra dovrebbe output no e restituzioni 0 come puoi vedere:

>>> php -r 'echo function_exists("foo") ? "yes" : "no";'
no
>>> echo $? # print the return value of the previous command
0

Un'altra opzione divertente è php -a :

-a               Run as interactive shell

È un po' debole rispetto a phpsh , ma se non vuoi installare la fantastica shell interattiva per PHP creata da Facebook per ottenere il completamento delle schede, la cronologia e così via, allora usa -a come tale :

>>> php -a
Interactive shell

php > echo function_exists("foo") ? "yes" : "no";
no
php >

Se non funziona sulla tua scatola come sulla mia scatolaes (testato su Ubuntu e Arch Linux), quindi probabilmente la configurazione di PHP è confusa o non funzionante . Se esegui questo comando:

php -i | grep 'API'

Dovresti vedi:

Server API => Command Line Interface

Se non lo fai , ciò significa che forse un altro comando fornirà la CLI SAPI . Prova php-cli; forse è un pacchetto o un comando disponibile nel tuo sistema operativo.

Se lo fai vedi che il tuo php Il comando utilizza la CLI (interfaccia della riga di comando) SAPI (API del server), quindi esegui php -h | grep code per scoprire quale pazzesco passaggio - dato che questo non è cambiato da anni- consente di eseguire il codice nella tua versione/configurazione.

Un altro paio di esempi, solo per assicurarmi che funzioni sulle mie scatole:

>>> php -r 'echo function_exists("sg_load") ? "yes" : "no";'
no
>>> php -r 'echo function_exists("print_r") ? "yes" : "no";'
yes

Si noti inoltre che è possibile che un'estensione venga caricata nella CLI e non nella CGI o in Apache SAPI. È probabile che diverse SAPI PHP utilizzino file php.ini differenti , ad esempio, /etc/php/cli/php.ini contro /etc/php/cgi/php.ini contro /etc/php/apache/php.ini su una macchina Gentoo Linux. Scopri quale file ini viene utilizzato con php -i | grep ini .


Utilizzo di PHP dalla riga di comando

Usa " invece di ' su Windows quando si utilizza la versione CLI con -r :

Corretto

php -r "echo 1;"

Sbagliato

php -r 'echo 1;'
  PHP Parse error:  syntax error, unexpected ''echo' (T_ENCAPSED_AND_WHITESPACE), expecting end of file in Command line code on line 1

Non dimenticare il punto e virgola per chiudere la riga (altrimenti, il risultato è "Errore di analisi PHP:errore di sintassi, fine imprevista del file, in attesa di ';' o ',' nel codice della riga di comando sulla riga 1" ).


Linux
  1. Come disattivare l'audio dalla riga di comando?

  2. Esegui script Perl/PHP dalla riga di comando

  3. Da dove posso trovare il codice sorgente del comando cp?

  4. Come posso fornire una password SSH a SVN sulla riga di comando?

  5. Come posso inviare automaticamente la posta crittografata con gpg dalla riga di comando di Linux?

Come posso eseguire una funzione da uno script nella riga di comando?

Come posso ottenere il bitrate di un video da una riga di comando in Linux?

Come cancellare il contenuto di un file dalla riga di comando?

Come reindirizzare il testo dalla riga di comando agli appunti

Come ottenere l'URL del file Dropbox dalla riga di comando?

Come posso scrivere su dmesg dalla riga di comando?