Как запустить 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

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

  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 отсутствует модуль 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 из командной строки!

Другие вопросы по тегам