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" ).