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