如何在WAMPServer中从Windows命令行运行PHP
我是php新手,希望从命令行运行php。我已经安装了WAMP,并将“系统变量”设置到我的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]\
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下工作
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';"