How To Run PHP From Windows Command Line in WAMPServer
我是php的新手,想从命令行运行php。 我已经安装了WAMP,并将"系统变量"设置为我的php文件夹(
当我转到
当我输入
所谓的PHP CLI(命令行界面中的php)称为php.exe。
它位于
如果您想创建从命令行运行的php scrips,那么它非常简单且非常有用。
像这样创建一个批处理文件,将其命名为
1 2 | PATH=%PATH%;c:\\wamp\\bin\\php\\phpx.y.z php -v |
将
将此文件保存到您的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网站的用户评论中找到了解决方案:http://www.php.net/manual/zh/features.commandline.interactive.php#105729
尝试使用批处理文件
相依性
如果您收到错误php,则无法识别任何内部或外部命令
然后转到环境变量并编辑php.exe的路径
您所描述的问题听起来像您的PHP版本可能缺少readline PHP模块,从而导致交互式外壳无法正常工作。我基于此PHP错误提交。
尝试跑步
1 | php -m |
并查看" readline"是否出现在输出中。
可能有充分的理由从发行版中删除阅读行。 PHP通常由Web服务器执行;因此,对于大多数用例而言,并不是真正需要的。我确定您可以使用以下命令从命令提示符下的文件中执行PHP代码:
1 | php file.php |
还有一个phpsh项目,它为PHP提供了一个(更好的)交互式shell。但是,有些人在Windows下运行它时遇到了麻烦(我没有尝试
这个我自己)。
编辑:
根据此处的文档,Windows下不支持
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中写入
更新
经过很少的研究,最好的解决方案是使用该信息另一个堆栈溢出线程以避免ctrl + z输入和scree输出。
因此,应该使用
旧
在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了!