Я новичок в 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
Попробуйте использовать командный файл
php -S localhost:8000
.bat
, server.bat
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.
Итак, если это правильно, ваши варианты:
Если вы хотите просто запустить быстрый фрагмент кода, вы можете использовать параметр -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';"