выполните строку кода 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 опция? Если так, почему это не доступно, когда я работаю - справка? Если нет никакой-r опции, что лучший способ состоит в том, чтобы сделать это (не пишущий посредническому сценарию если возможный)?

Спасибо!

=== РЕДАКТИРОВАНИЕ ===

Поскольку я не думаю, что это было очень ясно выше,-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>.

Нет НИКАКОЙ-r опции. Когда я пытаюсь использовать-r опцию, я добираюсь:

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

Извините за беспорядок.

60
задан Matthew J Morrison 17 June 2010 в 12:18
поделиться

2 ответа

РЕДАКТИРОВАТЬ2: Да, это есть в PHP 5.2 cli SAPI .

РЕДАКТИРОВАТЬ: Если вы не можете выполнить обновление и в этом случае такой опции нет в PHP 5.2 (у меня нет ее под рукой для тестирования), вы можете сделать это:

glopes@nebm:~$ echo "<?php echo \"hi\\n\";" | php
hi

Оригинал:

Действительно существует параметр -r (хотя я не уверен насчет PHP 5.2):

D:\>php -r "echo 'hi';";
hi

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

D:\>php --version
PHP 5.3.0 (cli) (built: May 20 2010 19:05:12) (DEBUG)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies
89
ответ дан 24 November 2019 в 17:46
поделиться

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

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

php -i

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

3
ответ дан 24 November 2019 в 17:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: