Как выполнить PHP код из командной строки?



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



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

522   2  

2 ответов:

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

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

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

вы можете использовать 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, чтобы получить завершение вкладки, историю и т. д., потом использовать-как такое:

>>> 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 (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 используют разные РНР.ini-файлы, например,/etc/php/cli/php.ini vs /etc/php/cgi/php.ini vs /etc/php/apache/php.ini на коробке Gentoo. Узнайте, какой ini-файл используется с php -i | grep ini.

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

php -i | grep sourceguardian

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

Comments

    Ничего не найдено.