Я хотів би виконати одне твердження 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
Ви можете використовувати -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 (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