Как запустить PHP из командной строки Windows

Я новичок в php и хочу запустить php из командной строки. Я установил WAMP и установил "Системные переменные" в свою папку php (C:\wamp\bin\php\php5.4.3).

Когда я перехожу к RunCMD → Type php -a и нажимаю enter, он говорит interactive mode enabled. Но когда я пишу echo 'Hi';, он ничего не показывает.

Я даже не вижу ничего подобного "php > ", когда я набираю php -a и нажимаю enter.

Ответ 1

PHP CLI как его называемый (php для интерфейса командной строки) называется php.exe Он живет в c:\wamp\bin\php\php5.x.y\php.exe (где x и y - номера версий php, которые вы установили)

Если вы хотите создать скрипты php для запуска из командной строки, тогда это будет очень просто и полезно.

Создайте себе такой пакетный файл, позвоните ему phppath.cmd:

PATH=%PATH%;c:\wamp\bin\php\php5.x.y
php -v

Сохраните это в одной из ваших папок, которая уже находится на вашем PATH, поэтому вы можете запускать ее из любого места.

Теперь из командной строки cd в исходную папку и запустите > phppath.

Затем запустите

php your_script.php

Он должен работать как сон.

Вот пример, который настраивает PHP Composer и PEAR, если это необходимо, и они существуют

@echo off

REM **************************************************************
REM * PLACE This file in a folder that is already on your PATH
REM * Or just put it in your C:\Windows folder as that is on the
REM * Serch path by default
REM * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
REM * EDIT THE NEXT 3 Parameters to fit your installed WAMPServer
REM **************************************************************


set baseWamp=D:\wamp
set defaultPHPver=7.1.9
set composerInstalled=%baseWamp%\composer
set phpFolder=\bin\php\php

if %1.==. (
    set phpver=%baseWamp%%phpFolder%%defaultPHPver%
) else (
    set phpver=%baseWamp%%phpFolder%%1
)

PATH=%PATH%;%phpver%
php -v
echo ---------------------------------------------------------------


REM IF PEAR IS INSTALLED IN THIS VERSION OF PHP

IF exist %phpver%\pear (
    set PHP_PEAR_SYSCONF_DIR=D:\wamp\bin\php\php%phpver%
    set PHP_PEAR_INSTALL_DIR=D:\wamp\bin\php\php%phpver%\pear
    set PHP_PEAR_DOC_DIR=D:\wamp\bin\php\php%phpver%\docs
    set PHP_PEAR_BIN_DIR=D:\wamp\bin\php\php%phpver%
    set PHP_PEAR_DATA_DIR=D:\wamp\bin\php\php%phpver%\data
    set PHP_PEAR_PHP_BIN=D:\wamp\bin\php\php%phpver%\php.exe
    set PHP_PEAR_TEST_DIR=D:\wamp\bin\php\php%phpver%\tests

    echo PEAR INCLUDED IN THIS CONFIG
    echo ---------------------------------------------------------------
) else (
    echo PEAR DOES NOT EXIST IN THIS VERSION OF php
    echo ---------------------------------------------------------------
)

REM IF A GLOBAL COMPOSER EXISTS ADD THAT TOO
REM **************************************************************
REM * IF A GLOBAL COMPOSER EXISTS ADD THAT TOO
REM *
REM * This assumes that composer is installed in /wamp/composer
REM *
REM **************************************************************
IF EXIST %composerInstalled% (
    ECHO COMPOSER INCLUDED IN THIS CONFIG
    echo ---------------------------------------------------------------
    set COMPOSER_HOME=%baseWamp%\composer
    set COMPOSER_CACHE_DIR=%baseWamp%\composer

    PATH=%PATH%;%baseWamp%\composer

    rem echo TO UPDATE COMPOSER do > composer self-update
    echo ---------------------------------------------------------------
) else (
    echo ---------------------------------------------------------------
    echo COMPOSER IS NOT INSTALLED
    echo ---------------------------------------------------------------
)

set baseWamp=
set defaultPHPver=
set composerInstalled=
set phpFolder=

Вызовите этот командный файл следующим образом, чтобы использовать версию PHP по умолчанию

> phppath

Или получить определенную версию PHP, подобную этой

> phppath 5.6.30

Ответ 2

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

C:\>php -a 
Interactive mode enabled 

<?php 
echo "Hello, world!"; 
?> 
^Z 
Hello, world!

После входа в интерактивный режим введите с помощью открывающего (<?php) и закрывающего (?>) php-тега и завершите управление Z (^Z), которое обозначает конец файла.

Я также помню, что нашел решение из комментария пользователя php site: http://www.php.net/manual/en/features.commandline.interactive.php#105729

Ответ 3

Попробуйте использовать командный файл

  • Открыть блокнот
  • type php -S localhost:8000
  • сохранить файл как расширение .bat, server.bat
  • теперь щелкните по файлу server.bat, ваш сервер готов на http://localhost:8000

Зависимость

если вы получили ошибку php, не распознаете какую-либо внутреннюю или внешнюю команду   затем перейти к переменной окружения и изменить путь к php.exe   "C:\wamp\bin\php\php5.4.3"

Ответ 4

Проблема, которую вы описываете, звучит так, как ваша версия PHP может отсутствовать PHP-модуль readline, в результате чего интерактивная оболочка не работает. Я основываю это на этой ошибке PHP.

Попробуйте запустить

php -m

И посмотрите, появляется ли на выходе "readline".

Там могут быть веские причины для отказа от чтения из дистрибутива. PHP обычно выполняется веб-сервером; поэтому на самом деле это не нужно для большинства случаев использования. Я уверен, что вы можете выполнить PHP-код в файле из командной строки, используя:

php file.php

Существует также проект phpsh, который предоставляет (лучшую) интерактивную оболочку для PHP. Тем не менее, некоторым людям не удалось запустить его под Windows (я не пытался это сам).

Edit: Согласно документации здесь, readline не поддерживается в Windows:

Примечание. Это расширение недоступно на платформах Windows.

Итак, если это правильно, ваши варианты:

  • Избегайте интерактивной оболочки и просто выполняйте PHP-код в файлах из командной строки - это должно хорошо работать
  • Попробуйте заставить phpsh работать под Windows

Ответ 5

Если вы хотите просто выполнить быстрый фрагмент кода, вы можете использовать опцию -r:

php -r "echo 'hi';"

-r позволяет запускать код без использования script тегов <?..?>

Ответ 6

Вы можете запускать php-страницы, используя php.exe создать некоторый php файл с php-кодом и в cmd write "[PATH to php.ext]\php.exe [path_to_file]\file.php"

Ответ 7

ОБНОВЛЕНО После нескольких исследований лучшим решением было использование этой информации fooobar.com/questions/90237/..., чтобы избежать ввода ctrl + z, а также из вывода scree. Итак, вместо php -a вы должны использовать call "php.exe" -f NAMED_SCRIPT.php

OLD Чтение невозможно под Windows, поэтому ни одна из существующих php-оболочек, написанных на php, не будет работать. Но есть обходной путь с использованием интерактивного режима.

2 проблемы с сообщением здесь. Вы не можете увидеть результат до выполнения команды CTRL Z, чтобы указать окончательный код/​​файл, например EOF. Когда вы это делаете, результатом в большинстве случаев является результат печати и быстрое закрытое окно. Во всяком случае, вы вернетесь в cmd, а не в интерактивный режим.

Сохраните этот контент в файле .bat и определите свой PHP PATH в переменных Windows или измените php.exe на "полный путь к exe":

::
:: PHP Shell launch wrapper
::
@ECHO off
call "php.exe" -a

echo.
echo.

call "PHP Shell.bat"

Это простой пакетный запуск - режим php.exe. Когда он запускает php, остановите script, даже никакая пауза не будет написана, потому что "в" интерактивное ожидание ввода. Когда вы нажимаете CTRL Z, получает SIGSTEP (следующий шаг), а не SIGSTOP (обычно закрывайте, CTRL + C), затем читайте следующую конструкцию, которая является рекурсивным вызовом самому .bat. Поскольку вы всегда находитесь в режиме PHP -a, нет команды выхода. Вы должны использовать CTRL + C или нажать на крест на выходе с помощью мыши. (Нет alt + f4)

Вы также можете использовать конвертер "Bat to Exe" для удобства использования.

Ответ 8

Это потому, что вы находитесь в "Интерактивном режиме", где php оценивает все, что вы набираете. Чтобы увидеть конечный результат, вы делаете "ctrl + z" и Enter. Теперь вы должны увидеть результат:)

p.s. запустите cmd как Administrator!

Ответ 9

В Windows поместите файл php.exe в windows/system32 или в другие системные исполняемые папки, а затем перейдите в командную строку и введите php и нажмите Enter, следуя за ним, если он не генерирует никаких ошибок, тогда вы готовы использовать PHP в командной строке. Если вы установили свой php.exe где-то еще, кроме системных папок по умолчанию, вам нужно установить путь к нему в переменных среды! Вы можете попасть туда по следующему пути....

панель управления → System → Edith переменные среды вашей учетной записи → Environment Vaiables → path → edit, затем установите абсолютный путь вашего php.exe и выполните ту же процедуру, что и в первом абзаце, если ничего в отделе ошибок, тогда вы готовы использовать php из командной строки!

Ответ 10

Следующее решение специально для сред Wamp:

Это лишило меня на некоторое время, попробовал все другие предложения, $PATH и т.д. даже искал в реестре Windows поиск ключей:

GUI (wampmanager) указывает, что у меня выбрана версия 7 и да, если я phpinfo() на странице в браузере, она скажет мне, что ее версия 7.xx все же php -v в командной строке сообщает 5.xx

Если вы щелкните правой кнопкой мыши по головке wampmanager на значок- > tools- > удалите неиспользуемые версии и удалите старую версию, дайте ей перезапустить службы, тогда командная строка вернет 7.x.x

Это решение означает, что у вас больше нет старой версии, если вы хотите переключиться между версиями php, но есть файл конфигурации в C:\wamp64\wampmanager.conf, который, как представляется, указывает версию для использования с CLI (параметр называемой phpCliVersion). Я изменил его, перезапустил сервер... думал, что решил это, но никакого эффекта, возможно, я был немного нетерпелив, поэтому у меня есть ощущение, что в этом может быть пробег.

Надеюсь, что кто-то поможет

Ответ 11

Все ответы хороши, но немного дольше. Вот фактический вопрос: Как запустить PHP скрипт из командной строки Windows. Если вы еще не добавили исполняемый файл PHP в системную переменную Windows, вот быстрый способ запустить PHP script легко.
  [path to PHP excutable]/php.exe [path to php file]/somefile.php

В моем случае было   c:\xampp\htdocs>C:/xampp/php/php.exe info.php

Теперь, если вы хотите напрямую выполнить PHP-код в командной строке, напишите код, как это...   [path to PHP executable]/php.exe -r "echo 'hi';"