在Windows上没有来自PHP交互的输出

时间:2013-06-28 10:07:28

标签: php windows-7 command-line-interface output

我在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 PHP小组     Zend Engine v2.4.0,版权所有(c)1998-2012 Zend Technologies

C:\xampp>php -a
Interactive mode enabled

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

任何其他想法???

我也试过php -an并在php.ini中设置output_buffing Off,都无济于事。

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

8 个答案:

答案 0 :(得分:12)

输入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 &lt;?php ,然后才能输入更多内容。

为了保存一些输入,我创建了一个快捷方式,右键单击它,打开它的属性对话框并在 目标 文本框中输入以下命令:

  

C:\ Windows \ System32 \ cmd.exe / k“php -a”

此快捷方式以交互方式打开PHP提示。或者,这个以交互模式启动并列出PHP开关:

  

C:\ Windows \ System32 \ cmd.exe / k“php -h&amp; php -a”

答案 1 :(得分:9)

Interactive mode Interactive shell相同。后者接受cmd中的命令或linux中的shell。第一个读入整个脚本,然后返回输出。如果您在代码段末尾点击CTRL-Z,则应返回输出。

点击此处:http://php.net/manual/en/features.commandline.interactive.php了解详情(尤其是first comment)。

答案 2 :(得分:7)

如果你开始&#34; php -a&#34;并查看&#34;交互式模式已启用&#34;而不是&#34;交互式 shell &#34;,那么您的php副本可能在没有readline支持的情况下编译,并且没有交互式shell。

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

&#34; php -a&#34;应该像这样工作(在这种情况下从php的linux副本输出):

$ php -a
Interactive shell

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

&#34; php -a&#34;在PHP的Windows副本中,它不是一个交互式shell,因此有效地工作就像离开&#34; -a&#34;选项。使用F6或CTRL + Z键入EOF字符以完成脚本(显示为^ Z):

C:\>php -a
Interactive mode enabled

<?php
echo 5+8;
?>
^Z
13
C:\>

离开&#34; -a&#34;并且你得到基本相同的结果(减去文本&#34;启用交互模式&#34;:

C:\>php
<?php
echo 5+8;
?>
^Z
13
C:\>

如果您使用&#34; php -a&#34;并获得文本&#34;启用交互模式&#34;并且没有得到cli.prompt的输出(通常&#34; php&gt;&#34;),那么你应该检查你的php版本(用&#34; php -v&#34;)来制作确定它至少是5.1,并且你的php模块(使用&#34; php -m&#34;)来确保&#34; readline&#34;模块已列出。

答案 3 :(得分:2)

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

@echo off
:loop
    set /p php="php> " %=%
    php -r "%php%"
    echo.
goto loop

答案 4 :(得分:0)

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

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

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

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

(将返回11)真的很擅长数学哈哈: - )

答案 5 :(得分:0)

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

<?php
echo "HELLO WORLD";

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

答案 6 :(得分:0)

答案 7 :(得分:0)

从其他答案中可以看出,Windows PHP不轻松支持回显命令。 在Windows 10上可以解决此问题,但是您可以启用Windows 10 Ubuntu子外壳系统。

要为Linux安装Windows子系统

执行以下操作之一:

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

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

现在重新启动(也许先在此页面添加书签)

重新启动后,请安装this app并将其打开。 完成加载并创建用户后,键入sudo apt update && apt upgrade && apt install PHP

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