我是php的新手,想从命令行运行php。我已经安装了WAMP,并将“系统变量”设置为我的php文件夹(是C:\wamp\bin\php\php5.4.3
)。
当我转到Run
-> CMD
->输入php -a
并按Enter时,它说interactive mode enabled
。但是当我写的echo 'Hi';
时候什么也没显示。
当我键入php -a
并按回车键时,我什至看不到“ php>”之类的东西。
我是php的新手,想从命令行运行php。我已经安装了WAMP,并将“系统变量”设置为我的php文件夹(是C:\wamp\bin\php\php5.4.3
)。
当我转到Run
-> CMD
->输入php -a
并按Enter时,它说interactive mode enabled
。但是当我写的echo 'Hi';
时候什么也没显示。
当我键入php -a
并按回车键时,我什至看不到“ php>”之类的东西。
Answers:
它称为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
PATH=%PATH%
说用当前路径创建一个新的PATH环境变量,即%PATH%
加上我们要添加到其中的新目录。Windows在PATH中搜索文件夹,以查找在当前工作目录中找不到的可执行文件,即“ php.exe”。
我记得几年前我偶然发现这个问题的时候,这是因为Windows没有readline,因此没有交互shell,要在没有readline支持的情况下使用php交互模式,可以这样做:
C:\>php -a
Interactive mode enabled
<?php
echo "Hello, world!";
?>
^Z
Hello, world!
进入交互模式后,使用开幕(<?php
)和结束(?>
)php标签键入内容,并以控件Z(^Z
)结束,该表示文件的末尾。
我还记得我从php的站点用户评论中找到了解决方案:http : //www.php.net/manual/zh/features.commandline.interactive.php#105729
readline
在Windows构建中启用了PHP 7.1 。这样做php -a
将带您进入,Interactive Shell
并允许您在按Enter键时执行命令,无需键入<?php
等...区别之处请参见此评论:be2.php.net/manual/en/…–
尝试使用批处理文件
php -S localhost:8000
.bat
扩展名,server.bat
server.bat
文件,您的服务器已准备就绪http://localhost:8000
如果您发现错误php无法识别任何内部或外部命令,请转到环境变量并编辑php.exe的路径
"C:\wamp\bin\php\php5.4.3"
您所描述的问题听起来像您的PHP版本可能缺少readline PHP模块,从而导致交互式外壳无法正常工作。我基于这个PHP错误提交。
尝试跑步
php -m
并查看“ readline”是否出现在输出中。
可能有很好的理由从发行版中删除阅读行。PHP通常由Web服务器执行;因此,对于大多数用例而言,并不是真正需要的。我确定您可以使用以下命令从命令提示符下的文件中执行PHP代码:
php file.php
还有一个phpsh项目,它为PHP提供了一个(更好的)交互式shell。但是,有些人在Windows下运行它遇到了麻烦(我自己没有尝试过)。
编辑:根据此处的文档,readline
Windows下不支持:
注意:此扩展名在Windows平台上不可用。
因此,如果正确,那么您的选择是:
readline
使之运行的功能-但是,如果您没有所需的经验并安装了整个工具链,则在Windows上可能会有些许努力。
您可以使用php.exe运行php页面,并使用php代码创建一些php文件,并在cmd中编写 "[PATH to php.ext]\php.exe [path_to_file]\file.php"
更新
经过很少的研究,最好的解决方案是使用该信息另一个stackoverflow线程以避免ctrl + z输入和scree输出。所以,而不是php -a
你应该使用call "php.exe" -f NAMED_SCRIPT.php
老的 Readline在Windows下是不可能的,因此用php编写的现有php shell都将无法工作。但是有一种使用-交互模式的解决方法。
这里有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)
您也可以使用“蝙蝠到埃克”转换器来轻松使用。
如果您不需要旧的php版本,请执行以下步骤:
这很好
以下解决方案专门用于沼泽环境:
这使我有些困惑,尝试了所有其他建议,$ PATH等甚至在Windows注册表中搜索了线索:
GUI(wampmanager)指示我选择了版本7,是的,如果我在浏览器的页面中使用phpinfo(),它将告诉我其版本7.xx,但命令提示符下的php -v报告5.xx。
如果右键单击wampmanager头,以图标-> tools->删除未使用的版本并删除旧版本,让其重新启动服务,则命令提示符将返回7.xx。
此解决方案意味着,如果您想在php版本之间进行切换,则不再具有旧版本,但是C:\ wamp64 \ wampmanager.conf中有一个配置文件,该文件似乎指定要与CLI一起使用的版本(该参数称为phpCliVersion) 。我更改了它,重新启动了服务器……以为我已解决它,但没有效果,也许我有点不耐烦,所以我觉得其中可能会有一些困难。
希望能帮助到某人
在Windows中,将您的php.exe文件放在Windows / system32或任何其他系统可执行文件夹中,然后转到命令行并键入php,然后按Enter,如果它没有产生任何错误,则您准备在命令行上使用PHP 。如果您已将php.exe设置为默认系统文件夹以外的其他位置,则需要在环境变量中设置它的路径!您可以按照以下路径到达那里。
控制面板->系统-> Edith您帐户的环境变量-> Environment Vaiables->路径->编辑,然后在那里设置php.exe的绝对路径,并按照与第一段相同的步骤进行操作,如果错误中没有显示任何内容部门,那么您就可以从命令行使用php了!