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

Dam*_*man 79 php windows shell command-line wamp

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

当我去Run- > CMD- >键入php -a并按回车时,它说interactive mode enabled.但是当我写echo 'Hi';它时什么都没显示.

当我打字php -a输入时,我甚至看不到像'php>那样的东西.

Rig*_*lly 71

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

如果你想创建php scrips从命令行运行那么它很容易,非常有用.

创建一个像这样的批处理文件,让我们调用它phppath.cmd:

PATH=%PATH%;c:\wamp\bin\php\phpx.y.z
php -v
Run Code Online (Sandbox Code Playgroud)

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

将其保存到PATH中已有的一个文件夹中,这样您就可以从任何地方运行它.

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

然后跑

php your_script.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.1.9
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=
Run Code Online (Sandbox Code Playgroud)

像这样调用此命令文件以使用PHP的默认版本

> phppath
Run Code Online (Sandbox Code Playgroud)

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

> phppath 5.6.30
Run Code Online (Sandbox Code Playgroud)


Hen*_*zia 36

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

C:\>php -a 
Interactive mode enabled 

<?php 
echo "Hello, world!"; 
?> 
^Z 
Hello, world!
Run Code Online (Sandbox Code Playgroud)

进入交互模式后,使用opening(<?php)和closing(?>)php标签键入,并以控件Z(^Z)结束,表示文件结束.

我还记得我从php的网站用户评论中找到了解决方案:http://www.php.net/manual/en/features.commandline.interactive.php#105729


Nis*_*ani 12

尝试使用批处理文件

  1. 打开记事本
  2. 类型 php -S localhost:8000
  3. 将文件另存为.bat扩展名,server.bat
  4. 现在点击server.bat文件你的服务器准备就绪http://localhost:8000

依赖

如果你有错误php无法识别任何内部或外部命令然后转到环境变量并编辑php.exe的路径 "C:\wamp\bin\php\php5.4.3"


dri*_*iis 11

您所描述的问题听起来像您的PHP版本可能缺少readline PHP模块,导致交互式shell无法正常工作.我基于这个PHP错误提交.

试试跑步

php -m
Run Code Online (Sandbox Code Playgroud)

并查看输出中是否出现"readline".

从分发中省略readline可能有充分的理由.PHP通常由Web服务器执行; 所以大多数用例并不是真的需要它.我确信您可以从命令提示符处理文件中的PHP代码,使用:

php file.php
Run Code Online (Sandbox Code Playgroud)

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

编辑:根据此处的文档,readlineWindows不支持:

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

所以,如果这是正确的,你的选择是:

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


Jam*_*ock 10

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

php -r "echo 'hi';"
Run Code Online (Sandbox Code Playgroud)

-r允许在不使用脚本标记的情况下运行代码 <?..?>


Adi*_*idi 4

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