Intereting Posts
Изменение времени выполнения PHP в зависимости от времени ожидания интернет / соединения? Как проверить ввод формы на одной странице с помощью случайных чисел? Как округлить число до ближайших 10? PHP: оптимальное хранилище конфигурации? Обработка данных из нескольких полей выбора СЕССИЯ Корзина добавляет 2 + или -2 проблемы Сопоставьте a ^ nb ^ nc ^ n (например, «aaabbbccc») с использованием регулярных выражений (PCRE) Можно ли удалить ActionScript из SWF-файла с помощью PHP? Удалить index.php в CodeIgniter_2.1.4 Форматировать форматирование URL-адреса Как использовать строку в качестве пути индекса массива для получения значения? Php Xpath – Как получить две информации в дочернем узле Многоязычная проблема Woocommerce, Как добавить и отредактировать строку. Вопросы об исключении PDO – как их поймать Как я могу использовать свою учетную запись GMAIL для отправки электронной почты с помощью PHP?

выполнить строку кода PHP в командной строке

Я хотел бы иметь возможность запускать строку кода PHP в командной строке, аналогичную тому, как работают следующие параметры:

:~> perl -e "print 'hi';" :~> python -c "print 'hi'" :~> ruby -e "puts 'hi'" 

Я хотел бы иметь возможность сделать:

 :~> php "echo 'hi';" 

Я читал, что есть опция -r, которая может делать то, что мне нужно для php, но, похоже, она недоступна, когда я пытаюсь ее использовать. Я пробовал использовать PHP 5.2.13 и PHP 4.4.9, а также не имеет опции -r.

Я написал этот скрипт (который я назвал run_php.php) – который работает, но я не являюсь его огромным поклонником только потому, что чувствую, что должен быть более «правильный» способ сделать это.

 #!/usr/bin/php5 -q <?php echo eval($argv[1]); ?> 

Мой вопрос: есть ли опция -r? Если да, то почему он недоступен, когда я запускаю –help? Если нет опции -r, каков наилучший способ сделать это (если это возможно), если это возможно).

Благодаря!

=== EDIT ===

Поскольку я не думаю, что это было очень ясно выше, опция -r НЕ доступна мне. Вот вывод php -h для обеих версий PHP, которые я запускаю.

PHP 4.4.9

 Usage: php [-q] [-h] [-s] [-v] [-i] [-f <file>] php <file> [args...] -a Run interactively -C Do not chdir to the script's directory -c <path>|<file> Look for php.ini file in this directory -n No php.ini file will be used -d foo[=bar] Define INI entry foo with value 'bar' -e Generate extended information for debugger/profiler -f <file> Parse <file>. Implies `-q' -h This help -i PHP information -l Syntax check only (lint) -m Show compiled in modules -q Quiet-mode. Suppress HTTP Header output. -s Display colour syntax highlighted source. -v Version number -w Display source with stripped comments and whitespace. -z <file> Load Zend extension <file>. 

php 5.2.13

 Usage: php [-q] [-h] [-s] [-v] [-i] [-f <file>] php <file> [args...] -a Run interactively -C Do not chdir to the script's directory -c <path>|<file> Look for php.ini file in this directory -n No php.ini file will be used -d foo[=bar] Define INI entry foo with value 'bar' -e Generate extended information for debugger/profiler -f <file> Parse <file>. Implies `-q' -h This help -i PHP information -l Syntax check only (lint) -m Show compiled in modules -q Quiet-mode. Suppress HTTP Header output. -s Display colour syntax highlighted source. -v Version number -w Display source with stripped comments and whitespace. -z <file> Load Zend extension <file>. 

Существует опция NO -r. Когда я пытаюсь использовать параметр -r, я получаю:

 Error in argument 1, char 2: option not found r 

Извините за путаницу.

Solutions Collecting From Web of "выполнить строку кода PHP в командной строке"

EDIT2: Да, он есть в клиенте SAP 5.2 .

EDIT: если вы не можете обновить, и это так, что такой возможности нет в PHP 5.2 (у меня нет его под рукой для тестирования), вы можете сделать это:

 glopes @ nebm: ~ $ echo "<? php echo \" hi \\ n \ ";"  |  PHP
 Здравствуй

Оригинал:

Существует действительно опция -r (хотя я не уверен в PHP 5.2):

 D: \> php -r "echo 'hi';";
 Здравствуй

Просто убедитесь, что вы используете версию командной строки PHP. php --version должно дать вам что-то вроде этого (обратите внимание на cli):

 D: \> php --версия
 PHP 5.3.0 (cli) (построено: 20 мая 2010 19:05:12) (DEBUG)
 Copyright (c) 1997-2009 PHP Group
 Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies

В новых версиях PHP вы просто набираете «php -a», и вы прыгаете в интерактивный режим, где вы можете экспериментировать с PHP.

Взгляните на эту страницу на функциях командной строки PHP , если вы еще этого не сделали. Есть несколько сообщений по вопросам, основанным на ОС, и двойные или одинарные кавычки.

Я также хотел бы проверить информацию PHP

php -i

чтобы узнать, был ли скомпилирован PHP с отключенной поддержкой CLI (–disable-cli).

В конце концов, дополнительная полуколонка не требуется.

Вы можете упомянуть php -r "echo 'hi';" вместо php -r "echo 'hi';";

Другой пример (Чтобы получить текущую временную метку в командной строке):

 php -r 'print time()."\n";' 

Самый простой способ сделать это – использовать флаг -r. Однако я обнаружил, что он не допускает многострочные входы. Чтобы обойти это, вы можете сделать это:

 php -r "passthru(file_get_contents('php://stdin'));" 

Это позволяет вам подключаться от stdin, например:

 echo -n "echo 'test';" | php -r "passthru(file_get_contents('php://stdin'));" 

Однако, чтобы ответить на исходный вопрос, если у вас нет флага -r, также можно использовать флаг -f – просто передайте stdin в качестве файла для открытия: php -f /dev/stdin

Если вы это сделаете, имейте в виду, что a) вам нужно включить пробел в начале ввода, и b) вам нужно открыть с помощью <?php . Пример:

 echo -ne " <?php\necho 'test';" | php -f /dev/stdin