如何在WAMPServer中从Windows命令行运行PHP

How To Run PHP From Windows Command Line in WAMPServer

我是php的新手,想从命令行运行php。 我已经安装了WAMP,并将"系统变量"设置为我的php文件夹(C:\\wamp\\bin\\php\\php5.4.3)。

当我转到Run-> CMD->键入php -a并按Enter时,它说interactive mode enabled。 但是当我写echo 'Hi';时,它什么也没显示。

当我输入php -a并按Enter键时,我什至看不到" php>"之类的东西。


所谓的PHP CLI(命令行界面中的php)称为php.exe。
它位于c:\\wamp\\bin\\php\\php5.x.y\\php.exe (其中x和y是您已安装的php的版本号)

如果您想创建从命令行运行的php scrips,那么它非常简单且非常有用。

像这样创建一个批处理文件,将其命名为phppath.cmd

1
2
PATH=%PATH%;c:\\wamp\\bin\\php\\phpx.y.z
php -v

x.y.z更改为WAMPServer中已安装的PHP版本的有效文件夹名称

将此文件保存到您的PATH中已经存在的一个文件夹中,以便可以在任何地方运行它。

现在,从命令窗口中,进入您的源文件夹,并运行> phppath。

然后跑

php your_script.php

它应该像梦一样运作。

这是一个配置PHP Composer和PEAR(如果需要)的示例,它们存在

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
@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 * Search path by default
REM * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
REM * EDIT THE NEXT 3 Parameters to fit your installed WAMPServer
REM **************************************************************


set baseWamp=D:\\wamp
set defaultPHPver=7.4.3
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

1
> phppath

或获得像这样的特定版本的PHP

1
> phppath 5.6.30


我记得几年前我偶然发现这个问题的时候,是因为Windows没有readline,因此没有交互shell,要在没有readline支持的情况下使用php交互模式,可以改为执行以下操作:

1
2
3
4
5
6
7
8
C:\\>php -a
Interactive mode enabled

<?php
echo"Hello, world!";
?>
^Z
Hello, world!

进入交互模式后,使用开头()和结束(?>)php标签键入内容,并以控件Z(^Z)结束,表示文件的结尾。

我还记得我从php网站的用户评论中找到了解决方案:http://www.php.net/manual/zh/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版本可能缺少readline PHP模块,从而导致交互式外壳无法正常工作。我基于此PHP错误提交。

    尝试跑步

    1
    php -m

    并查看" readline"是否出现在输出中。

    可能有充分的理由从发行版中删除阅读行。 PHP通常由Web服务器执行;因此,对于大多数用例而言,并不是真正需要的。我确定您可以使用以下命令从命令提示符下的文件中执行PHP代码:

    1
    php file.php

    还有一个phpsh项目,它为PHP提供了一个(更好的)交互式shell。但是,有些人在Windows下运行它时遇到了麻烦(我没有尝试
    这个我自己)。

    编辑:
    根据此处的文档,Windows下不支持readline

    Note: This extension is not available on Windows platforms.

    因此,如果正确,则您的选择是:

    • 避免使用交互式外壳程序,只需从命令行在文件中执行PHP代码-这应该可以正常工作
    • 尝试让phpsh在Windows下工作


    如果您只想运行一个快速代码段,则可以使用-r选项:

    1
    php -r"echo 'hi';"

    -r允许运行代码而无需使用脚本标记


    您可以使用php.exe运行php页面
    用php代码创建一些php文件,并在cmd中写入"[PATH to php.ext]\\php.exe [path_to_file]\\file.php"


    更新
    经过很少的研究,最好的解决方案是使用该信息另一个堆栈溢出线程以避免ctrl + z输入和scree输出。
    因此,应该使用call"php.exe" -f NAMED_SCRIPT.php代替php -a


    在Windows下无法使用Readline,因此,用php编写的现有php shell均无法使用。但是有一种使用-交互模式的解决方法。

    这里有2个常见问题。在执行CTRL Z命令以指示代码/文件的结尾(如EOF)之前,您将看不到结果。当您这样做时,结果在大多数情况下是打印结果并快速关闭窗口。无论如何,您将返回到cmd而不是-a交互模式。

    将该内容保存到.bat文件中,然后将PHP PATH定义为Windows变量,或者将php.exe修改为" exe的完整路径":

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ::
    :: 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)

    您也可以使用"蝙蝠到埃克"转换器来轻松使用。


    如果您不需要旧的php版本,请执行以下步骤:

    • 打开wamp并在wamp管理器上单击鼠标右键,然后单击go:tools / Change PHP CLI Version,然后将php版本更改为最新
    • 再次右键单击Wamp Manager,然后单击go:tools / Delete unuserd版本并删除您的系统坚持将其作为您的PC php版本的最旧的版本:D
    • 转到控制面板/用户帐户/更改我的环境变量,然后在PATH变量中单击"编辑"并添加最新的php版本路径,该路径位于您的wamp服务器bin文件夹中
    • 关闭所有命令行或IDE,然后重新启动它们并检查php -v

    这很好


    以下解决方案专门用于沼泽环境:

    这使我有些困惑,尝试了所有其他建议,$ PATH等甚至在Windows注册表中搜索了线索:

    GUI(wampmanager)指示我选择了版本7,是的,如果我在浏览器的页面中显示phpinfo(),它将告诉我其版本7.x.x,而命令提示符下的php -v报告了5.x.x。

    如果在wampmanager头上右键单击图标-> tools-> delete未使用的版本并删除旧版本,请让它重新启动服务,然后命令提示符将返回7.x.x

    此解决方案意味着,如果要在php版本之间进行切换,则不再具有旧版本,但是C:\ wamp64 \ wampmanager.conf中有一个配置文件,该文件似乎指定要与CLI一起使用的版本(该参数称为phpCliVersion) 。我更改了它,重新启动了服务器……以为我已解决它,但没有效果,也许我有点不耐烦,所以我觉得其中可能会有一些困难。

    希望可以帮助某人


    这是因为您处于"交互模式",其中php会评估您键入的所有内容。要查看最终结果,请执行" ctrl + z"并按Enter。您现在应该可以看到评估结果:)

    ps。以管理员身份运行cmd!


    在Windows中,将您的php.exe文件放在Windows / system32或任何其他系统可执行文件夹中,然后转到命令行并键入php,然后按Enter,如果它没有产生任何错误,则您准备在命令行上使用PHP 。如果您已将php.exe设置为默认系统文件夹以外的其他位置,则需要在环境变量中设置它的路径!您可以按照以下路径到达...。

    控制面板->系统-> Edith您帐户的环境变量-> Environment Vaiables->路径->编辑,然后在那里设置php.exe的绝对路径,并按照与第一段相同的步骤进行操作,如果错误中没有显示任何内容部门,那么您就可以从命令行使用php了!