Pokud se chystáte dělat PHP v příkazovém řádku, doporučuji nainstalovat phpsh, slušný PHP shell. Je to mnohem zábavnější.
Každopádně php
příkaz nabízí dva přepínače pro spuštění kódu z příkazového řádku :
-r <code> Run PHP <code> without using script tags <?..?>
-R <code> Run PHP <code> for every input line
Můžete použít php
přepínač -r jako takový:
php -r 'echo function_exists("foo") ? "yes" : "no";'
Výše uvedený příkaz PHP by měl vystupovat no
a vrátí 0
jak můžete vidět:
>>> php -r 'echo function_exists("foo") ? "yes" : "no";'
no
>>> echo $? # print the return value of the previous command
0
Dalším vtipným přepínačem je php -a :
-a Run as interactive shell
Je to jaksi lame ve srovnání s phpsh , ale pokud nechcete instalovat úžasný interaktivní shell pro PHP vytvořený Facebookem, abyste získali dokončení karet, historii atd., pak použijte -a jako takové :
>>> php -a
Interactive shell
php > echo function_exists("foo") ? "yes" : "no";
no
php >
Pokud to nefunguje na vaší krabici jako na mé krabicies (testováno na Ubuntu a Arch Linux), pak pravděpodobně je vaše nastavení PHP nejasné nebo poškozené . Pokud spustíte tento příkaz:
php -i | grep 'API'
Měli byste viz:
Server API => Command Line Interface
Pokud ne , to znamená, že možná jiný příkaz poskytne rozhraní CLI SAPI . Zkuste php-cli; možná je to balíček nebo příkaz dostupný ve vašem OS.
Pokud ano podívejte se, že vaše php
příkaz používá rozhraní CLI (rozhraní příkazového řádku) SAPI (Server API), poté spusťte php -h | grep code
abyste zjistili, který šílený přepínač – protože se to už rok nezměnilo – umožňuje spouštět kód ve vaší verzi/nastavení.
Dalších pár příkladů, jen abych se ujistil, že to funguje na mých krabicích:
>>> php -r 'echo function_exists("sg_load") ? "yes" : "no";'
no
>>> php -r 'echo function_exists("print_r") ? "yes" : "no";'
yes
Všimněte si také, že je možné, že rozšíření je načteno v CLI a ne v CGI nebo Apache SAPI. Je pravděpodobné, že několik PHP SAPI používá různé soubory php.ini , např. /etc/php/cli/php.ini
vs. /etc/php/cgi/php.ini
vs. /etc/php/apache/php.ini
na Gentoo Linuxovém boxu. Zjistěte, který soubor ini se používá s php -i | grep ini
.
Použití PHP z příkazového řádku
Použijte "
místo '
v systému Windows při použití verze CLI s -r
:
Správně
php -r "echo 1;"
Nesprávné
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
Nezapomeňte středník pro uzavření řádku (jinak je výsledkem "chyba PHP Parse:chyba syntaxe, neočekávaný konec souboru, očekává se ';' nebo ',' v kódu příkazového řádku na řádku 1" ).