Vorrei eseguire una singola istruzione php come if(function_exists("my_func")) echo 'function exists';
direttamente con la riga di comando senza dover utilizzare un file php separato.
Come è possibile ?
Vorrei eseguire una singola istruzione php come if(function_exists("my_func")) echo 'function exists';
direttamente con la riga di comando senza dover utilizzare un file php separato.
Come è possibile ?
Risposte:
Se hai intenzione di fare PHP nella riga di comando, ti consiglio di installare phpsh, una shell PHP decente .È molto più divertente.
Comunque, il comando php 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
È possibile utilizzare l'opzione -r di php come tale:
php -r 'echo function_exists("foo") ? "yes" : "no";'
Il comando PHP sopra riportato dovrebbe generare no
e restituire 0
come puoi vedere:
>>> php -r 'echo function_exists("foo") ? "yes" : "no";'
no
>>> echo $? # print the return value of the previous command
0
Un altro interruttore divertente è php -a :
-a Run as interactive shell
È un po 'zoppo rispetto a phpsh , ma se non vuoi installare la fantastica shell interattiva per php creata da Facebook per ottenere il completamento della scheda, la cronologia e così via , 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 scatola * es * ( testato su Ubuntu e Arch), probabilmente la tua configurazione di PHP è sfocata o rotta . Se si esegue questo comando:
php -i | grep 'API'
Si dovrebbe vedere:
Server API => Command Line Interface
In caso contrario , ciò significa che forse un altro comando fornirà il CLI SAPI . Prova php-cli, forse è un pacchetto o un comando disponibile nel tuo sistema operativo.
Se fate vedi che il tuo comando php usa la CLI (Command Line Interface) SAPI (Server API), quindi eseguiphp -h | grep code
per scoprire quale interruttore folle - poiché questo non è cambiato da un anno - consente di eseguire il codice nella tua versione / configurazione.
Un altro paio di esempi, solo per assicurarsi 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 sia caricata nella CLI e non nella CGI o Apache SAPI. È probabile che diverse SAPI PHP utilizzino file php.ini diversi , ad es. /etc/php/cli/php.ini
Vs /etc/php/cgi/php.ini
vs /etc/php/apache/php.ini
su un box Gentoo. Scopri con quale file ini viene utilizzato php -i | grep ini
.
Sulla riga di comando:
php -i | grep sourceguardian
Se è lì, riceverai del testo. In caso contrario, non otterrai nulla.
.php
file? "?
Puoi usare :
echo '<?php if(function_exists("my_func")) echo "function exists"; ' | php
Anche il tag breve " <? = " Può essere utile:
echo '<?= function_exists("foo") ? "yes" : "no";' | php
echo '<?= 8+7+9 ;' | php
Il tag di chiusura "?>" È facoltativo, ma non dimenticare l'ultimo ";" !
php -r
non è necessario preoccuparsi di aprire i tag PHP.
Utilizzo di PHP dalla riga di comando
usa " invece di ' su windows quando usi la versione cli con -r
php -r "echo 1"
-- corretta
php -r 'echo 1'
- errato
PHP Parse error: syntax error, unexpected ''echo' (T_ENCAPSED_AND_WHITESPACE), expecting end of file in Command line code on line 1