Я хотел бы смочь выполнить строку кода 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
Извините за беспорядок.
РЕДАКТИРОВАТЬ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
Взгляните на эту страницу Функции командной строки PHP , если вы еще этого не сделали. Есть несколько сообщений о проблемах, связанных с ОС и двойными или одинарными кавычками.
Я бы также проверил информацию PHP
php -i
, чтобы узнать, был ли PHP скомпилирован с отключенной поддержкой CLI (--disable-cli).