Я хотел бы выполнить один оператор 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 использует интерфейс командной строки (интерфейс командной строки) SAPI (серверный API), запустите php -h | grep code
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
vs /etc/php/cgi/php.ini
vs /etc/php/apache/php.ini
на Gentoo коробка. Узнайте, какой файл ini используется с php -i | grep ini
php -i | grep ini
.
В командной строке:
php -i | grep sourceguardian
Если он есть, вы получите текст. Если нет, вы ничего не получите.