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

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

Когда я иду в Run -> CMD -> Введите php -a и нажмите enter, он говорит, что interactive mode enabled . Но когда я пишу echo 'Hi'; он ничего не показывает.

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

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

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

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

 PATH=%PATH%;c:\wamp\bin\php\php5.xy 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 

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

 C:\>php -a Interactive mode enabled <?php echo "Hello, world!"; ?> ^Z Hello, world! 

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

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

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

  1. Открыть блокнот
  2. Тип php -S localhost:8000
  3. сохранить файл как расширение .bat , server.bat
  4. теперь нажмите на server.bat файл, ваш сервер готов на http://localhost:8000

зависимость

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

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

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

 php -m 

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

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

 php file.php 

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

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

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

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

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

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

 php -r "echo 'hi';" 

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

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

OLD Readline невозможен в 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, останавливает скрипт, даже пауза не записывается, потому что «находится» в интерактивном ожидании ввода. Когда вы нажимаете CTRL Z, получает SIGSTEP (следующий шаг), а не SIGSTOP (обычно закрывайте, CTRL + C), затем читайте следующую конструкцию, которая является рекурсивным вызовом самому .bat. Поскольку вы всегда находитесь в режиме PHP -a, нет команды выхода. Вы должны использовать CTRL + C или нажать на крест на выходе с помощью мыши. (Нет alt + f4)

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

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

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

ps запускает cmd как Администратор!

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

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

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

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

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

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

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

Надежда, которая помогает кому-то

Все ответы хороши, но немного дольше. Вот фактический вопрос: как запустить PHP-скрипт из командной строки Windows. Если вы не добавили исполняемый файл PHP в системную переменную Windows, это быстрый способ легко запустить PHP-скрипт.
[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';"