17

我在我的 Win 7 机器上从 xampp (5.4.7) 以交互方式运行 php,并且无法从窗口获得任何输出。我搜索了各种解决方案,但到目前为止没有任何效果。这是一个示例:C:\xampp>php -v PHP 5.4.7 (cli)(构建时间:2012 年 9 月 12 日 23:48:31)版权所有 (c) 1997-2012 The PHP Group Zend Engine v2.4.0,版权所有 (c ) 1998-2012 Zend 技术

C:\xampp>php -a
Interactive mode enabled

<?
echo "hi";
printf "hi";
fwrite (STDOUT, "hi");

还有其他想法???

我还尝试了 php -an 并在 php.ini 中设置 output_buffing Off,但均无济于事。

基本上我的目标主要是将其用作 php 表达式的测试平台以及运行一些本地脚本。

4

8 回答 8

14

我输入后输入的第一行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"

于 2013-12-01T05:30:45.400 回答
11

Interactive mode不一样。_ Interactive shell后者接受 cmd 中的命令或 linux 中的 shell。第一个读取整个脚本,然后返回输出。如果您要点击CTRL-Z片段的末尾,它应该返回输出。

在这里查看:http: //php.net/manual/en/features.commandline.interactive.php了解更多信息(尤其是第一条评论)。

于 2013-06-28T10:48:04.267 回答
10

如果您启动“php -a”并看到“启用交互模式”而不是“交互shell ”,那么您的 php 副本很可能是在没有 readline 支持的情况下编译的,并且没有交互 shell。

据我所知,PHP 的 Windows 副本都是在没有 readline 支持的情况下编译的。这使得“-a”选项在 Windows 中毫无价值(至少对我而言)。

“php -a”应该像这样工作(在这种情况下是从 php 的 linux 副本输出):

$ php -a
Interactive shell

php > echo 5+8;
13
php > exit
$

PHP 的 Windows 副本中的 "php -a" 不是交互式 shell,因此其效果与取消 "-a" 选项的效果相同。使用 F6 或 CTRL+Z 键入 EOF 字符以完成脚本(显示为 ^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”模块。

于 2016-03-10T17:07:33.867 回答
2

我制作了 cmd 脚本来模拟交互式 php shell。它将每个命令读入一个环境变量,然后启动一个新的 PHP 实例来运行每个命令。

@echo off
:loop
    set /p php="php> " %=%
    php -r "%php%"
    echo.
goto loop
于 2014-11-18T08:25:41.513 回答
1

从 PHP 7.1.0开始,Windows 都支持interactive shellreadline

于 2018-06-29T15:35:36.773 回答
0

在windows中使用。确保您在 Windows 环境中直接有 php 的 PATH 变量。可能需要重新启动。使用 gitbash/cmd/rails shell/nodejs 等,但不应该有任何区别。打开命令

用命令检查 php: php -v 如果所有好的都填充了 php 版本等

加载交互模式: php -a 启用后输入您的代码,例如如下(每行都有回车) ^z 是同时按下 ctrl 键和 z 键的 shell 输出这会运行您的小片段,但会立即弹出你退出php交互模式

<?php
$x = 5;
$y = 6;
$z = $x + $y;
echo $z;
?>
^z

(将返回 11)非常擅长数学哈:-)

于 2014-10-13T09:35:04.370 回答
0

使用 时Interactive Mode,您实际上需要输入整个脚本。

<?php
echo "HELLO WORLD";

然后要“执行”脚本,您需要CTRL+Z在空行上执行并按ENTER

于 2018-05-02T04:15:19.560 回答
0

正如您从其他答案中看到的那样,Windows PHP 不支持回显命令(很容易)。但是,在 Windows 10 上有一种解决方法,您可以启用 Windows 10 Ubuntu 子 shell 系统。

为 linux 安装 windows 子系统

执行以下操作之一:

  • 控制面板 -> 应用程序 -> 管理可选功能。然后确保Windows-subsystem for linux被选中。

  • 您也可以通过Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux在提升的 Powershell 窗口中运行来安装它。

现在重新启动(也许先收藏这个页面)

重新启动后,安装此应用程序并打开它。完成加载并创建用户后,输入sudo apt update && apt upgrade && apt install PHP.

现在,当您需要 php 交互时,只需打开命令提示符,bash然后键入php -a

于 2018-12-01T19:46:58.290 回答