C:\wamp\bin\php\php5.4.3
)中。但是当我编写Run
时,它什么也没显示。当我键入
CMD
并按Enter键时,我什至没有看到类似'php>“的东西。#1 楼
称为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
将
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.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
> phppath
或获取特定版本的PHP像这个
> phppath 5.6.30
评论
可以,谢谢。您能解释一下这是如何工作的吗?我看到了php文件夹的路径,但是如何将其与命令行变量“ php”相关联,并且PATH =%PATH%的作用是什么?
– TetraDev
2015年11月9日在21:09
PATH =%PATH%表示使用当前路径创建一个新的PATH环境变量,即%PATH%加上我们要添加到其中的新目录。 Windows在PATH中搜索文件夹以查找可执行文件,即在当前工作目录中找不到的``php.exe''。
–RiggsFolly
2015年11月10日9:13
它在W10上工作正常。你一定做错了
–RiggsFolly
16年1月26日,0:54
OP有效地要求在Windows中使用PHP REPL。我不认为这可以回答问题
–icc97
17-10-27在15:25
@Cullub在Power Shell中不起作用-在正常Shell中它可以工作
–欢乐
18年6月9日在18:32
#2 楼
我记得几年前有一次偶然发现此问题的原因是因为Windows没有readline,因此没有交互shell,要在没有readline支持的情况下使用php交互模式,可以改为执行以下操作:C:\>php -a
Interactive mode enabled
<?php
echo "Hello, world!";
?>
^Z
Hello, world!
进入交互模式后,使用open(
<?php
)和close(?>
)php标签键入,并以控件Z(^Z
)结尾,该Z表示文件的末尾。 br />我还记得我从php网站的用户评论中找到了解决方案:http://www.php.net/manual/en/features.commandline.interactive.php#105729 评论
PHP 7.1在Windows版本中启用了readline。进行php -a会将您带到Interactive Shell,并在您按Enter键时允许执行命令,而无需键入<?php等...以区别之处请参见此注释:be2.php.net/manual/en/ …
–超音
18-2-26在11:34
#3 楼
尝试使用批处理文件打开记事本
键入
php -S localhost:8000
将文件另存为
.bat
扩展名,server.bat
现在单击
server.bat
服务器上的http://localhost:8000
文件已准备就绪依赖项
如果错误php无法识别任何内部或外部命令,请转到环境变量编辑php.exe的路径
"C:\wamp\bin\php\php5.4.3"
评论
使用WAMPServer时,永远不要在路径中添加任何内容。它破坏了在多个PHP版本之间轻松切换的能力
–RiggsFolly
2015年9月2日13:00
#4 楼
您所描述的问题听起来像您的PHP版本可能缺少readline PHP模块,从而导致交互式外壳无法正常工作。我基于此PHP错误提交。尝试运行
php -m
,看看输出中是否出现“ readline”。 >
可能有充分的理由从发行版中删除readline。 PHP通常由Web服务器执行;因此,对于大多数用例而言,并不是真正需要的。我确信您可以在命令提示符下使用以下命令在文件中执行PHP代码:
php file.php
还有phpsh项目,它提供了一个(更好的)交互式shell PHP。但是,有些人在Windows下运行它遇到了麻烦(我自己没有尝试过
)。
编辑:
根据此处的文档,Windows下不支持
readline
:注意:此扩展名在Windows平台上不可用。
因此,如果正确,您的选择是:
避免使用交互式shell,只需从命令行在文件中执行PHP代码-这样就可以正常工作
尝试使phpsh在Windows下运行
评论
不,它不会出现吗?这是什么意思?
–达曼
13年3月24日在10:05
这意味着交互模式在您的PHP发行版中不起作用。我认为您最好将代码放在.php文件中,并从命令行或通过Web服务器执行这些代码-应该可以。我的答案中的链接提到您可以从源代码编译PHP并包括readline来使它起作用-但是,如果您没有所需的经验并安装了整个工具链,则在Windows上可能会有点努力。
–driis
13年3月24日在10:07
@driis我已经安装了python来使用来自Facebook的phpsh,但是经过大量研究,我发现phpsh与python 3不兼容:(是否有python 3支持的类似phpsh的东西?
–达曼
13年3月24日在11:54
@Daman,对不起,我什么都不知道。也许安装Python 2?另外,我认为人们也一直在Windows下运行phpsh时遇到问题,同样,我自己也没有尝试过。
–driis
13年3月24日在12:01
#5 楼
如果只想运行快速代码段,则可以使用-r选项:php -r "echo 'hi';"
-r允许运行代码而无需使用脚本标签
<?..?>
#6 楼
您可以使用php.exe运行php页面使用php代码创建一些php文件,然后在cmd中编写
"[PATH to php.ext]\php.exe [path_to_file]\file.php"
评论
您的php.exe的路径是什么?
–阿迪迪
13年3月24日在10:12
C:\ wamp \ bin \ php \ php5.4.3 \ php.exe
–达曼
13年3月24日在11:52
因此,创建时使用<?php echo('test');来说php页面名称test.php; ?>-将其放在c:/上,打开命令行,然后键入“ C:\ wamp \ bin \ php \ php5.4.3 \ php.exe”“ c:\ test.php”-您看到了什么?
–阿迪迪
13年3月24日在12:23
#7 楼
UPDATED经过一些研究,最好的解决方案是使用该信息来避免另一个ctrl + z输入以及scree输出中的ctrl + z输入。
而不是
php -a
,应使用call "php.exe" -f NAMED_SCRIPT.php
OLD
在Windows下无法使用readline,因此用php编写的现有php shell均不可用。但是有一种使用-a交互模式的解决方法。
这里有2个常见问题。在执行CTRL Z命令以指示代码/文件的结尾(如EOF)之前,您将看不到结果。当您这样做时,结果在大多数情况下是打印结果并快速关闭窗口。无论如何,您将返回到cmd而不是-a交互模式。
将此内容保存到.bat文件中,并将PHP PATH定义为Windows变量,或将php.exe修改为“完整路径”改为exe”:
::
:: 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)
还可以使用“蝙蝠转Exe”转换器以方便使用。
#8 楼
如果不需要旧的php版本,只需执行以下步骤:打开wamp并右键单击wamp管理器,然后单击go:tools / Change PHP CLI Version,然后将php版本更改为最新版本
再一次右键单击Wamp Manager而不是:工具/删除未使用的版本,并删除系统坚持将其作为PC php版本的最旧版本:D
转到控制面板/用户帐户/更改我的环境变量,然后在PATH变量中单击“编辑”,然后在wamp服务器bin文件夹中添加最新的php版本路径。
关闭所有命令行或IDE,然后重新启动它们并检查php -v
这很好用
#9 楼
那是因为您在“交互模式”下,php会评估您键入的所有内容。要查看最终结果,请执行“ ctrl + z”并按Enter。您现在应该可以看到评估结果:)p.s。以管理员身份运行cmd!
#10 楼
以下解决方案专门针对沼泽环境:这使我有些困惑,尝试了所有其他建议,$ PATH等甚至在Windows注册表中搜索了线索:
GUI(wampmanager)指示我选择了版本7,是的,如果我在浏览器的页面中显示phpinfo(),它将告诉我其版本7.xx,但命令提示符下的php -v报告5.xx。
如果右键单击wampmanager头上的图标->工具->删除未使用的版本并删除旧版本,请让其重新启动服务,然后命令提示符将返回7.xx。
此解决方案意味着,如果要在php版本之间进行切换,则不再具有旧版本,但是C:\ wamp64 \ wampmanager.conf中有一个配置文件,该文件似乎指定要与CLI一起使用的版本(该参数称为phpCliVersion)。我进行了更改,重新启动了服务器……以为我已经解决了它,但没有效果,也许我有点不耐烦,所以我觉得其中可能会有一些困难。
希望对某人有所帮助
评论
您所说的旧版本是所有WAMPServer自己的内部脚本都针对其进行测试的PHP版本。如果删除PHP5.x.x,则意味着冒着这些脚本无法运行的风险!
–RiggsFolly
17-10-27在23:10
#11 楼
在Windows中,将您的php.exe文件放在Windows / system32或任何其他系统可执行文件夹中,然后转到命令行并键入php,然后按Enter,如果它没有产生任何错误,则您准备在命令行上使用PHP 。如果您将php.exe设置为默认系统文件夹以外的其他位置,则需要在环境变量中设置它的路径!您可以通过以下路径到达那里。...控制面板->系统->编辑帐户的环境变量->环境变量->路径->编辑,然后设置您的绝对路径php.exe在那里并按照与第一段相同的步骤进行操作,如果错误部门没有任何帮助,那么您就可以从命令行使用php!
评论
使用WAMPServer时,切勿将PHP放在PATH上。 WAMPServer可以安装许多版本的PHP。在PTH中放置一个版本意味着您无法在两个版本之间切换。
–RiggsFolly
17-10-27在23:11
评论
stackoverflow.com/questions/7361149 / ...据我所知,Windows的唯一正确选择是使用出色的psysh,这是从另一个SO答案中推荐的:stackoverflow.com/a/33790472/327074