Eu gostaria de executar uma única instrução php como if(function_exists("my_func")) echo 'function exists';
diretamente com a linha de comando sem precisar usar um arquivo php separado.
Como isso é possível ?
Eu gostaria de executar uma única instrução php como if(function_exists("my_func")) echo 'function exists';
diretamente com a linha de comando sem precisar usar um arquivo php separado.
Como isso é possível ?
Respostas:
Se você for fazer PHP na linha de comando, recomendo instalar o phpsh, um shell PHP decente . É muito mais divertido.
De qualquer forma, o comando php oferece duas opções para executar o código na linha de comando :
-r <code> Run PHP <code> without using script tags <?..?>
-R <code> Run PHP <code> for every input line
Você pode usar a opção -r do php :
php -r 'echo function_exists("foo") ? "yes" : "no";'
O comando PHP acima acima deve gerar no
e retornar 0
como você pode ver:
>>> php -r 'echo function_exists("foo") ? "yes" : "no";'
no
>>> echo $? # print the return value of the previous command
0
Outra opção engraçada é php -a :
-a Run as interactive shell
É meio coxo comparado ao phpsh , mas se você não quiser instalar o incrível shell interativo para php criado pelo facebook para obter a conclusão da guia, o histórico etc. , use -a como tal :
>>> php -a
Interactive shell
php > echo function_exists("foo") ? "yes" : "no";
no
php >
Se não funcionar na sua caixa como na minha caixa * es * ( testada no Ubuntu e Arch), provavelmente a sua configuração do PHP está confusa ou com problemas . Se você executar este comando:
php -i | grep 'API'
Você deve ver:
Server API => Command Line Interface
Caso contrário , isso significa que talvez outro comando forneça a CLI SAPI . Experimente o php-cli, talvez seja um pacote ou um comando disponível no seu sistema operacional.
Se você perceber que seu comando php usa a SAPI (API de servidor) da CLI (Command Line Interface), execute php -h | grep code
para descobrir qual opção maluca - como isso não mudou durante o ano - permite executar o código em sua versão / configuração.
Mais alguns exemplos, apenas para garantir que funcione nas minhas caixas:
>>> php -r 'echo function_exists("sg_load") ? "yes" : "no";'
no
>>> php -r 'echo function_exists("print_r") ? "yes" : "no";'
yes
Além disso, observe que é possível que uma extensão seja carregada na CLI e não na CGI ou Apache SAPI. É provável que vários SAPIs PHP usem arquivos php.ini diferentes , por exemplo, /etc/php/cli/php.ini
vs /etc/php/cgi/php.ini
vs /etc/php/apache/php.ini
em uma caixa do Gentoo. Descubra com qual arquivo ini é usado php -i | grep ini
.
Na linha de comando:
php -i | grep sourceguardian
Se estiver lá, você receberá algum texto. Caso contrário, você não receberá nada.
.php
arquivo? "?
Você pode usar :
echo '<?php if(function_exists("my_func")) echo "function exists"; ' | php
A tag curta " <? = " Também pode ser útil:
echo '<?= function_exists("foo") ? "yes" : "no";' | php
echo '<?= 8+7+9 ;' | php
A tag de fechamento "?>" É opcional, mas não esqueça a final ";" !
php -r
você não precisa se preocupar em abrir tags PHP.
Usando PHP na linha de comando
use "em vez de ' no windows ao usar a versão cli com -r
php -r "echo 1"
- correto
php -r 'echo 1'
-- incorreta
PHP Parse error: syntax error, unexpected ''echo' (T_ENCAPSED_AND_WHITESPACE), expecting end of file in Command line code on line 1