Я хотел бы выполнить один оператор php, как if(function_exists("my_func")) echo 'function exists';
непосредственно в командной строке, без необходимости использовать отдельный файл php.
Как это возможно ?
Я хотел бы выполнить один оператор php, как if(function_exists("my_func")) echo 'function exists';
непосредственно в командной строке, без необходимости использовать отдельный файл php.
Как это возможно ?
Ответы:
Если вы собираетесь использовать PHP в командной строке, я рекомендую установить phpsh, достойную оболочку PHP . Это намного веселее.
В любом случае, команда php предлагает два ключа для выполнения кода из командной строки :
-r <code> Run PHP <code> without using script tags <?..?>
-R <code> Run PHP <code> for every input line
Вы можете использовать параметр php -r как таковой:
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
vs /etc/php/apache/php.ini
на коробке Gentoo. Узнайте, какой файл INI используется с php -i | grep ini
.
В командной строке:
php -i | grep sourceguardian
Если это там, то вы получите текст. Если нет, вы ничего не получите.
.php
файл? »?
Ты можешь использовать :
echo '<?php if(function_exists("my_func")) echo "function exists"; ' | php
Короткий тег " <? = " Также может быть полезен:
echo '<?= function_exists("foo") ? "yes" : "no";' | php
echo '<?= 8+7+9 ;' | php
Закрывающий тег "?>" Необязателен, но не забывайте последний ";" !
php -r
вам не нужно беспокоиться об открытии тегов PHP.
Использование PHP из командной строки
используйте " вместо " в Windows при использовании Cli-версии с -r
php -r "echo 1"
-- верный
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