Отсутствует выход из PHP, интерактивного в Windows
Я запускаю php интерактивно из xampp (5.4.7) на моей машине Win 7 и не могу получить какой-либо вывод из окна. Я искал различные решения и ничего не работал. Здесь образец: C:\xampp > php -v PHP 5.4.7 (cli) (построено: 12 сентября 2012 23:48:31) Copyright (c) 1997-2012 PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
C:\xampp>php -a
Interactive mode enabled
<?
echo "hi";
printf "hi";
fwrite (STDOUT, "hi");
любые другие идеи
Я также пробовал php -an и установил output_buffing Off в php.ini, но все это не помогло.
В основном моя цель в основном состоит в том, чтобы использовать это как тестовый файл для выражений php, а также для запуска некоторых локальных скриптов.
Ответы
Ответ 1
Первая строка, которую я вводил после ввода php -a
, немного отличается от вашей:
<?php //press Enter
echo 'This '; //press Enter
echo 'works'; //press Enter
//Press Ctrl+z on this line to get a ^Z, then press Enter
This works
C:\Windows\System32>
Неприятностью является то, что он возвращается в командную строку Windows, и вы должны продолжать набирать php -a и <? php, прежде чем вы сможете ввести больше.
Чтобы сохранить немного ввода, я создал ярлык, щелкнул его правой кнопкой мыши, открыл диалоговое окно "Свойства" и ввел следующую команду в текстовое поле Цель:
C:\Windows\System32\cmd.exe/k "php -a"
Этот ярлык открывает приглашение PHP в интерактивном режиме. В качестве альтернативы, этот режим запускается в интерактивном режиме и перечисляет переключатели PHP:
C:\Windows\System32\cmd.exe/k "php -h и php -a"
Ответ 2
Interactive mode
не совпадает с Interactive shell
. Позднее принимает команды вроде cmd или shell, найденные в linux. Первый читается во всем скрипте, а затем возвращается с выходом. Если вы нажмете CTRL-Z
в конце фрагмента, он должен вернуть результат.
Проверьте здесь: http://php.net/manual/en/features.commandline.interactive.php для получения дополнительной информации (особенно первый комментарий).
Ответ 3
Если вы запустите "php -a" и увидите "Интерактивный режим включен" вместо "Интерактивный shell", то ваша копия php, скорее всего, была скомпилирована без поддержки readline, и нет интерактивной оболочки.
Насколько мне известно, копии Windows для Windows полностью скомпилированы без поддержки readline. Это делает параметр "-a" никчемным в Windows (по крайней мере для меня).
"php -a" должен работать следующим образом (вывод из Linux-копии php в этом случае):
$ php -a
Interactive shell
php > echo 5+8;
13
php > exit
$
"php -a" в Windows-копии PHP не является интерактивной оболочкой, и поэтому эффективно работает так же, как отказ от опции "-a" . Используйте F6 или CTRL + Z для ввода символа EOF для завершения script (отображается как ^ Z):
C:\>php -a
Interactive mode enabled
<?php
echo 5+8;
?>
^Z
13
C:\>
Оставьте "-a" , и вы получите практически те же результаты (минус текст "Интерактивный режим включен":
C:\>php
<?php
echo 5+8;
?>
^Z
13
C:\>
Если вы используете "php -a" и получаете текст "Интерактивный режим включен" и не получаете вывод для cli.prompt(обычно "php > " ), тогда вы должны проверить свою версию php (с помощью php -v "), чтобы убедиться, что он не менее 5.1, и ваши php-модули (с" php -m "), чтобы убедиться, что модуль" readline "указан.
Ответ 4
Я делаю cmd script для эмуляции интерактивной php-оболочки. Он считывает каждую команду в переменную среды, а затем запускает новый экземпляр PHP для запуска каждой команды.
@echo off
:loop
set /p php="php> " %=%
php -r "%php%"
echo.
goto loop
Ответ 5
Использовать в окнах. Убедитесь, что у вас есть переменная PATH для php непосредственно в среде Windows. Может потребоваться перезагрузка. Используйте gitbash/cmd/rails shell/nodejs и т.д., Но не должны иметь никакого значения. Открыть cmd
Проверить php с помощью команды: php -v
если все хорошее заполняет версию php и т.д. и т.д.
загрузить интерактивный режим с помощью: php -a
введите свой код после включения, например, следующим образом (каждая строка имеет возврат каретки)
^ z - вывод оболочки, нажимая клавишу ctrl, и ключ z вместе
это запускает небольшой фрагмент, но мгновенно выталкивает вас из интерактивного режима php.
<?php
$x = 5;
$y = 6;
$z = $x + $y;
echo $z;
?>
^z
(вернет 11) был действительно хорош в математике ha: -)
Ответ 6
При использовании Interactive Mode
вам буквально нужно ввести весь скрипт.
<?php
echo "HELLO WORLD";
Затем, чтобы "выполнить" скрипт, вам нужно сделать CTRL+Z
в пустой строке и нажать ENTER
Ответ 7
С PHP 7.1 интерактивная оболочка поддерживается в Windows.
Ответ 8
Как вы можете прочитать из других ответов, Windows PHP не поддерживает команды эха (легко). В Windows 10 есть способ обойти это, однако вы можете включить подклассу Ubuntu Windows 10.
Установка windows-подсистемы для Linux
Выполните одно из следующих действий:
-
Панель управления → Приложения → Администрирование дополнительных функций. Затем убедитесь, что Windows-subsystem for linux
проверена.
-
Вы также можете установить его, запустив Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
в увеличенном окне Powershell.
Теперь перезагрузите (возможно, сначала запишите эту страницу)
После перезагрузки установите это приложение и откройте его. Когда это сделало загрузку, и вы создали своего пользователя, введите sudo apt update && apt upgrade && apt install PHP
.
Теперь, когда вам нужно php interactive, просто откройте командную строку и введите bash
затем php -a