问题 Windows有一个简单的PHP shell吗?


是否有可用于Windows的命令行php shell?我寻找类似于python shell的东西,这将允许我打开并立即开始执行代码。


7534
2017-12-12 21:03


起源

你找到了解决办法吗? - shox


答案:


看看运行php.exe与 -a 争论,或者也许是 phpsh 项目。


3
2017-12-12 21:13



我想这是最接近原生PHP的。 - hakre
phpsh似乎是我正在寻找的,但我似乎无法让它在Windows上运行。我跑的时候 python setup.py build 我明白了 NameError: name '__init__' is not defined - ewok
@ewok,我也在努力让phpsh在windows上工作。我已经破解了python代码,试图让它工作,它绝对是为linux编写的。有很多linux / unix特定的os方法使用。因为我知道python,所以我正在考虑让项目变得友好。 - jlafay
@jlafay让我知道你是否/何时开始运行。 - ewok
@ewok,我很可能不会记得回到这里并发表评论让你知道所以如果你在github上“看”叉子这样你最好接收通知。 github.com/jefflafay/phpsh - jlafay


PHP的Windows命令行: http://php.net/manual/en/install.windows.commandline.php


5
2017-12-12 21:05



它在windows下如何表现得像python shell?我认为与OP要求相比,支持交互性(打字)的方式确实不同。 - hakre
您可以使用-a选项。 - Jonathan M
我试图跑步 php -a 但它没有像我预期的那样执行。我没有得到任何类型的提示(除了说“启用交互模式”),而且很简单 echo "hello world" 不会产生任何形式的输出。 - ewok
有关示例,请参阅此处的第一个用户提供的说明: php.net/manual/en/features.commandline.interactive.php - Jonathan M
IIRC是python shell执行的 ENTER 不开 CTRL+Z 然后按 ENTER。您可以使用像autohotkey这样的工具创建自己的键盘makro(例如,打开 SHIFT+ENTER)然后重新开始 php -a。 - hakre


尝试这个:

<?php
$fh = fopen('php://stdin', 'r');
$cmd = '';
$bcLvl = 0;
while (true)
{
    $line = rtrim(fgets($fh));
    $bcLvl += substr_count($line, '{') - substr_count($line, '}');
    $cmd.= $line;
    if ($bcLvl > 0 or substr($cmd, -1) !== ';')
    continue;
    eval($cmd);
    $cmd = '';
}

将此代码保存到文件(例如shell.php),然后从控制台运行它:

php shell.php

按CTRL + C退出。


5
2018-04-01 10:54



谢谢!这适用于Windows。 - Irfan
PHP的开发人员应该做 php -a 叫这个...... - Jonathan


另一个简单的变体,受其他答案的影响。创建并运行以下cmd脚本:

@echo off
:loop
php.exe -r "while (true) { eval (fgets (STDIN) ); echo PHP_EOL; }"
goto loop

立即执行,Ctrl + C退出。在“php.exe”之前插入正确的路径。


1
2018-04-12 01:04





PHP壳  - 它不是很好,但仍然比 php -a。 (而且,安装起来很简单,只需运行即可 pear install http://jan.kneschke.de/assets/2007/2/17/PHP_Shell-0.3.1.tgz。)还有 PHPA-norl,但我还没试过。


1
2017-07-10 17:11



链接不再有效。抛出404 - Jonathan
github.com/rainchen/phpa-norl 作为一个随意的谷歌搜索会发现。 - Tgr


我在github上发现了这两个:


0
2017-10-17 06:14



如果你使用Linux,boris是一个很棒的shell。 - Tgr


PsySH 是我最近见过的最好的REPL shell。 Tab-completion,phpdoc支持,正确的命名空间处理,交互式调试,插件支持等等。它是纯PHP并且具有作曲家支持,因此它应该易于在Windows上安装。我只是在Linux上尝试过,但是看一下代码,它似乎甚至在没有readline的操作系统上有一些历史支持。


0
2018-03-16 16:23





@Pavle Predic的回答(https://stackoverflow.com/a/15742101/2752670)在Windows上为我工作。

但我想用 shell.php 文件位置,所以我的解决方案是:

  1. 新的和保存 shell.php 在php安装的dir(或你喜欢的其他地方),例如 C:\Program Files\php-5.6.12-Win32-VC11-x64\shell.php

  2. 新的 Windows环境变量,关键: shell.php,价值: "C:\Program Files\php-5.6.12-Win32-VC11-x64"

  3. 重启电脑

  4. 在系统中的任何地方使用:

    php %shell.php%


0
2018-04-22 04:22



我不得不评论“重新启动计算机” - 实际上你真的需要这样做很少见。 - CrazyMerlin


也许回答 - 在这里阅读: https://stackoverflow.com/a/19085620/2480481 我想我找到了最简单的方法,因为我很有兴趣使用自己:)

我尝试了从这里和其他一些论坛/页面的所有选项...... Windows无法使用readline。


-1
2017-09-30 06:55



请在这里发布答案,而不是答案的链接 - Jonathan
你的意思是创造两面派吗? - erm3nda