Как передать программу в PHP (-r) в Windows?

В Windows 7 запуск php.exe из C:\wamp64\bin\php\php5.6.25\php.exe,
Я считаю, что следующее печатает инструкции по использованию PHP.

echo 4;|php -r <- печатает инструкцию по использованию php

C:\wamp64\bin\php\php5.6.25>echo 4;|php -r
Usage: php [options] [-f] <file> [--] [args...]
php [options] -r <code> [--] [args...]

Однако друг утверждает, что та же команда echo 4;|php -r (или, возможно, он имеет в виду echo '4;'|php -r работает на него, используя Linux.

Как я могу получить это поведение в Windows?

Заметка Я знаю, что php -r используется для запуска некоторого кода, переданного в качестве параметра, следующего за ним, я спрашиваю, запускает ли он файл или принимает стандартный ввод.

1

Решение

Здесь есть несколько моментов путаницы, поэтому я сделаю все возможное, чтобы перечислить, что не так.

Во-первых, оригинальная команда не может работать в оболочке Linux / POSIX, потому что она недопустима:

echo 4; | php -r

куда ; имеет важное значение, это разделитель команд, и команда не может начинаться с |,

Исправив это, вы получите:

echo '4;' | php -r

Где это, по крайней мере, верно в отношении оболочки, но для PHP все еще недостаточно. -r аргумент требует второго термина, code, который является кодом для оценки. Это должно быть сделано в линию, а не снаружи, как вы это обычно делаете.

В частности, -r флаг не означает «запустить входной файл, как если бы он имел <?php ... ?> окружить его «но вместо этого это означает» запустить этот бит кода в режиме PHP «.

Например:

echo '4;' | php

Технически работает, но это не оценивается как PHP-код, поэтому это бессмысленно.

Версия, которая работает в оболочке POSIX:

php -r `echo '4;'`

Где это указывает на вывод echo '4;' в сам аргумент командной строки. Я не уверен, что Windows может сделать это без участия PowerShell.

-r Флаг предназначен для быстрых маленьких фрагментов, таких как:

php -r 'echo 5 * 9;'

Где это печатает 45 как и ожидалось.

1

Другие решения

Пытаться

echo 4 | php -r

вместо того, чтобы завершать echo 4 и ничего не добавляя в php.

Не то чтобы это имело значение, «-r» ничего не значит для php. Также не 4 (кроме рифмования).

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector