Как выполнить код PHP из командной строки? - PullRequest
146 голосов
/ 01 марта 2012

Я хотел бы выполнить один оператор php, такой как if(function_exists("my_func")) echo 'function exists';, непосредственно с помощью командной строки, не используя отдельный файл php.

Как это возможно?

Ответы [ 3 ]

229 голосов
/ 01 марта 2012

Если вы собираетесь использовать PHP в командной строке, я рекомендую установить phpsh, достойную оболочку PHP . Это намного веселее.

В любом случае, команда php предлагает два ключа для выполнения кода из командной строки :

-r <code>        Run PHP <code> without using script tags <?..?>
-R <code>        Run PHP <code> for every input line

Вы можете использовать -r переключатель php как таковой:

php -r 'echo function_exists("foo") ? "yes" : "no";'

Приведенная выше команда PHP должна выводить no и возвращает 0, как вы можете видеть:

>>> php -r 'echo function_exists("foo") ? "yes" : "no";'
no
>>> echo $? # print the return value of the previous command
0

Еще одна забавнаяпереключатель php -a :

-a               Run as interactive shell

Это вроде хромает по сравнению с phpsh , но если вы не хотите устанавливать потрясающая интерактивная оболочка для php, созданная Facebook для получения завершения вкладки, истории и т. Д. , затем используйте -a как таковую :

>>> php -a
Interactive shell

php > echo function_exists("foo") ? "yes" : "no";
no
php > 

Если он не работает на вашем компьютере, как на моем компьютере * es * ( протестировано на Ubuntu и Arch), то , вероятно, ваши настройки PHP нечеткиеили сломан .Если вы выполните эту команду:

php -i | grep 'API'

Вам следует см .:

Server API => Command Line Interface

Если вы не , это означает, что возможно, другая команда предоставит CLI SAPI .Попробуйте php-cli, возможно, это пакет или команда, доступная в вашей ОС.

Если вы выполните , убедитесь, что ваша команда php использует CLI (интерфейс командной строки) SAPI (Server API), затем запустите от php -h | grep code до , чтобы выяснить, какой сумасшедший переключатель - поскольку это не изменилось за год - позволяет запускать код в вашей версии / настройке.чтобы убедиться, что он работает на моих компьютерах:

>>> php -r 'echo function_exists("sg_load") ? "yes" : "no";' 
no
>>> php -r 'echo function_exists("print_r") ? "yes" : "no";' 
yes

Также обратите внимание, что возможно, что расширение загружено в CLI, а не в CGI или Apache SAPI. Вполне вероятно, что несколько PHP SAPI используют разные файлы php.ini , например, /etc/php/cli/php.ini против /etc/php/cgi/php.ini против /etc/php/apache/php.ini на коробке Gentoo.Узнайте, какой INI-файл используется с php -i | grep ini.

2 голосов
/ 01 марта 2012

В командной строке:

php -i | grep sourceguardian

Если оно есть, вы получите текст.Если нет, вы ничего не получите.

0 голосов
/ 18 апреля 2019

Вы можете использовать:

 echo '<?php if(function_exists("my_func")) echo "function exists"; ' | php

Краткий тег " <? = </em>" также может быть полезен:

 echo '<?= function_exists("foo") ? "yes" : "no";' | php
 echo '<?= 8+7+9 ;' | php

Закрывающий тег "?>" Необязателен, но не забывайте последний ";" !

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...