Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在WAMPServer中从Windows命令行运行PHP_Php_Windows_Shell_Command Line_Wamp - Fatal编程技术网

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

如何在WAMPServer中从Windows命令行运行PHP,php,windows,shell,command-line,wamp,Php,Windows,Shell,Command Line,Wamp,我是php新手,希望从命令行运行php。我已经安装了WAMP,并将“系统变量”设置到我的php文件夹(即C:\WAMP\bin\php\php5.4.3) 当我进入Run->CMD->键入php-a并点击回车键时,它会显示交互式模式已启用。但是当我写的时候,回音是“Hi”它没有显示任何内容 当我键入php-a并按enter键时,我甚至看不到类似“php>”的内容。您可以使用php.exe运行php页面 使用php代码创建一些php文件,并在cmd write“[PATH to php.ext]\

我是php新手,希望从命令行运行php。我已经安装了WAMP,并将“系统变量”设置到我的php文件夹(即
C:\WAMP\bin\php\php5.4.3

当我进入
Run
->
CMD
->键入
php-a
并点击回车键时,它会显示
交互式模式已启用
。但是当我写
的时候,回音是“Hi”它没有显示任何内容


当我键入
php-a
并按enter键时,我甚至看不到类似“php>”的内容。

您可以使用php.exe运行php页面
使用php代码创建一些php文件,并在cmd write
“[PATH to php.ext]\php.exe[PATH_to_file]\file.php”

中描述的问题听起来像是您的php版本缺少readline php模块,导致交互式shell无法工作。我基于提交

试着跑步

php -m
并查看输出中是否出现“readline”

从发行版中省略readline可能有很好的理由。PHP通常由web服务器执行;因此大多数用例并不真正需要它。我相信您可以使用以下命令在命令提示符下执行文件中的PHP代码:

php file.php
还有一个项目为PHP提供了一个(更好的)交互式shell 这是我自己)

编辑: 根据,Windows下不支持读线

注意:此扩展在Windows平台上不可用

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

  • 避免使用交互式shell,只需从命令行在文件中执行PHP代码,这应该可以很好地工作
  • 尝试让phpsh在Windows下工作
PHP CLI(PHP用于命令行界面)称为PHP.exe 它位于
c:\wamp\bin\php\php5.x.y\php.exe
(其中x和y是您安装的php的版本号)

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

自己创建一个这样的批处理文件,让我们称之为
phppath.cmd

PATH=%PATH%;c:\wamp\bin\php\phpx.y.z
php -v
x.y.z
更改为已安装在WAMPServer中的PHP版本的有效文件夹名

将其保存到路径上的某个文件夹中,以便您可以在任何位置运行它

现在从命令窗口,将cd放入源文件夹并运行>phppath

然后跑

php你的脚本

它应该像梦一样工作

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

@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=%baseWamp%%phpFolder%%phpver%
    set PHP_PEAR_INSTALL_DIR=%baseWamp%%phpFolder%%phpver%\pear
    set PHP_PEAR_DOC_DIR=%baseWamp%%phpFolder%%phpver%\docs
    set PHP_PEAR_BIN_DIR=%baseWamp%%phpFolder%%phpver%
    set PHP_PEAR_DATA_DIR=%baseWamp%%phpFolder%%phpver%\data
    set PHP_PEAR_PHP_BIN=%baseWamp%%phpFolder%%phpver%\php.exe
    set PHP_PEAR_TEST_DIR=%baseWamp%%phpFolder%%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的默认版本

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

> phppath 5.6.30
已更新 经过几次研究,最好的解决方案是使用这些信息来避免ctrl+z输入,也避免从屏幕输出。 因此,您应该使用
调用“php.exe”-f NAMED_SCRIPT.php,而不是
php-a

旧的 在Windows下不可能使用Readline,因此用php编写的现有php shell都无法工作。但有一个解决方法是使用交互式模式

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

将此内容保存到.bat文件中,并将您的PHP路径定义为Windows变量,或将PHP.exe修改为“完整的exe路径”:

这是一个简单的批量启动-一种php.exe模式。当它启动php时,停止脚本,甚至不写入暂停,因为它“进入”交互等待输入。当你点击CTRL Z时,得到的是SIGSTEP(下一步),而不是SIGSTOP(关闭,通常是CTRL+C),然后阅读下一个指令,这是对.bat本身的递归调用。因为您总是处于PHP-a模式,所以没有退出命令。您必须使用CTRL+C或用鼠标点击退出十字。(无alt+f4)

您还可以使用“Bat-to-Exe”转换器以便于使用。

尝试使用批处理文件

  • 打开记事本
  • 键入
    php-S localhost:8000
  • 将文件另存为
    .bat
    扩展名,
    server.bat
  • 现在点击
    server.bat
    文件,您的服务器在
    http://localhost:8000
  • 附属国 如果出现错误,php将无法识别任何内部或外部命令 然后转到环境变量并编辑php.exe的路径
    “C:\wamp\bin\php\php5.4.3”

    我记得几年前有一次我偶然发现这个问题,因为windows没有readline,因此没有交互式shell,要使用php交互模式而不支持readline,您可以这样做:

    C:\>php -a 
    Interactive mode enabled 
    
    <?php 
    echo "Hello, world!"; 
    ?> 
    ^Z 
    Hello, world!
    
    C:\>php-a
    交互式模式已启用
    ^Z
    你好,世界!
    
    进入交互模式后,使用opening(
    )php标记键入,并以表示文件结束的控件Z(
    ^Z
    )结束


    我还记得,我从php的网站用户评论中找到了解决方案:

    ,这是因为您处于“交互模式”,php会对您键入的所有内容进行求值。要查看最终结果,请执行“ctrl+z”并输入。您现在应该看到求值结果:)


    p、 s.以管理员身份运行cmd!

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

    php -r "echo 'hi';"
    

    -r允许在windows中不使用脚本标记运行代码,将php.exe文件放在windows/system32或任何其他系统可执行文件夹中,然后转到命令行并键入php,然后按enter键,如果它没有生成任何错误,则您可以在命令行上使用php。如果您已将php.exe设置为e除了默认的系统文件夹之外,您还需要在环境变量中设置它的路径!您可以在以下路径中找到它

    控制面板->系统->编辑环境变量
    php -r "echo 'hi';"