Как запустить PHP из командной строки Windows
Я новичок в php и хочу запустить php из командной строки. Я установил WAMP и установил "Системные переменные" в свою папку php (C:\wamp\bin\php\php5.4.3
).
Когда я перехожу к Run
→ CMD
→ 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';"