Как запустить PHP из командной строки Windows в WAMPServer
Я новичок в php и хотел запустить php из командной строки. Я установил WAMP и установил "Системные переменные" в мою папку php (которая C:\wamp\bin\php\php5.4.3
).
Когда я иду в Run
-> CMD
-> Тип php -a
и нажмите ввод, он говорит interactive mode enabled
, Но когда я пишу echo 'Hi';
это ничего не показывает.
Я даже не вижу ничего похожего на 'php >", когда я печатаю php -a
и нажмите ввод.
12 ответов
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\phpx.y.z
php -v
+ Изменить x.y.z
к действительному имени папки для версии PHP, установленной в WAMPServer
Сохраните это в одну из ваших папок, которая уже находится в вашей переменной PATH, чтобы вы могли запустить ее из любого места.
Теперь из командного окна перейдите в вашу исходную папку и запустите>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 tag и заканчиваем контролем Z (^Z
) который обозначает конец файла.
Я также напоминаю, что нашел решение из комментария пользователя на сайте php: http://www.php.net/manual/en/features.commandline.interactive.php
Попробуйте использовать командный файл
- Открыть блокнот
- тип
php -S localhost:8000
- сохранить файл как
.bat
расширение,server.bat
- Теперь нажмите на
server.bat
файл ваш сервер готовhttp://localhost:8000
зависимость
если вы получили ошибку, php не распознает внутреннюю или внешнюю команду, то перейдите в переменную окружения и отредактируйте путь к php.exe "C:\wamp\bin\php\php5.4.3"
Проблема, которую вы описываете, звучит так, будто в вашей версии PHP отсутствует модуль readline PHP, из-за чего интерактивная оболочка не работает. Я основываю это на представлении ошибок в PHP.
Попробуйте запустить
php -m
И посмотрите, появляется ли readline в выводе.
Могут быть веские причины для исключения readline из дистрибутива. PHP обычно выполняется веб-сервером; так что в большинстве случаев это не нужно. Я уверен, что вы можете выполнить код PHP в файле из командной строки, используя:
php file.php
Существует также проект phpsh, который предоставляет (лучшую) интерактивную оболочку для PHP. Тем не менее, некоторые люди имели проблемы с запуском его под Windows (я сам не пробовал).
Изменить: Согласно документации здесь, readline
не поддерживается в Windows:
Примечание. Это расширение недоступно на платформах Windows.
Итак, если это правильно, ваши варианты:
- Избегайте интерактивной оболочки и просто выполняйте код PHP в файлах из командной строки - это должно работать хорошо
- Попробуйте заставить phpsh работать под Windows
Если вы хотите просто запустить быстрый фрагмент кода, вы можете использовать опцию -r:
php -r "echo 'hi';"
-r позволяет запускать код без использования тегов скрипта <?..?>
Вы можете запускать php-страницы с помощью php.exe, создавать php-файл с php-кодом и писать в cmd "[PATH to php.ext]\php.exe [path_to_file]\file.php"
ОБНОВЛЕНО После нескольких исследований лучшим решением было использовать эту информацию в другом потоке stackru, чтобы избежать ввода 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" конвертер для простоты использования.
Следующее решение предназначено специально для окружающих сред:
Это немного меня обмануло, я попробовал все остальные предложения, $PATH и т. Д. Даже искал в реестре Windows в поисках подсказок:
GUI (wampmanager) показывает, что у меня выбрана версия 7, и да, если я phpinfo() на странице в браузере, он сообщит мне свою версию 7.xx, а php -v в командной строке выдает 5.xx
Если вы щелкнете правой кнопкой мыши на заголовке wampmanager, чтобы выбрать icon->tools->delete неиспользуемые версии и удалить старую версию, дайте ей перезапустить сервисы, тогда командная строка вернет 7.xx
Это решение означает, что у вас больше нет старой версии, если вы хотите переключаться между версиями php, но есть файл конфигурации в C:\wamp64\wampmanager.conf, который, по-видимому, указывает версию для использования с CLI (параметр называется phpCliVersion), Я изменил его, перезапустил сервер... думал, что решил это, но безрезультатно, возможно, я был немного нетерпелив, поэтому у меня есть ощущение, что в этом может быть какой-то пробег.
Надеюсь, что это помогает кому-то
Просто сделайте эти шаги, если вам не нужна старая версия php:
- откройте wamp и щелкните правой кнопкой мыши на wamp manager, затем перейдите: tools/Change PHP CLI Version, чем изменить версию php на последнюю
- в другой раз щелкните правой кнопкой мыши на wamp manager, затем перейдите: tools/Delete unuserd version и удалите самую старую версию, на которой ваша система настаивает, чтобы она была вашей версией php для ПК:D
- перейдите в панель управления / учетную запись пользователя / измените мои переменные окружения и в переменной PATH нажмите edit и добавьте путь вашей последней версии php, который находится в папке bin вашего сервера wamp
- закройте все командные строки или IDE, перезапустите их и проверьте на наличие php -v
это хорошо работает
Это потому, что вы находитесь в "Интерактивном режиме", где php оценивает все, что вы печатаете. Чтобы увидеть конечный результат, вы нажимаете Ctrl+ Z и Enter. Вы должны увидеть оцененный результат сейчас:)
ps запустить cmd от имени администратора!
Небольшое улучшение сценария RiggsFolly выше, если вы установите:
PATH=%phpver%;%PATH%
и добавьте свой новый путь PHP ver в начале; это позволяет вам установить путь по умолчанию в настройках среды, а затем вам нужен этот скрипт только тогда, когда вы хотите перейти на другую версию.
Кроме того, если, как и я, вы хотите запустить это в оболочке git bash, просто вызовите скрипт make bash для вызова файла .bat:
#!/bin/bash
eval phppath.bat $1
В Windows поместите файл php.exe в windows/system32 или любые другие системные исполняемые папки, затем перейдите в командную строку, введите php и нажмите ввод, следуя за ним, если он не генерирует никаких ошибок, тогда вы готовы использовать PHP в командной строке., Если вы установили свой php.exe где-то, кроме системных папок по умолчанию, то вам нужно указать его путь в переменных окружения! Вы можете попасть туда по следующему пути....
Панель управления -> Система -> Edith переменные среды вашей учетной записи -> Environment Vaiables -> path -> edit, затем установите абсолютный путь к вашему php.exe и следуйте той же процедуре, что и в первом абзаце, если в ошибке ничего нет отдел, тогда вы готовы использовать php из командной строки!