如何在Windows机器上通过命令提示符运行PHP程序?

4
我是一名专业的PHP开发人员。
我使用一台运行Windows 10 Home Single Language 64位操作系统的Lenovo Ideapad笔记本电脑。
我还在位置"C:\xampp"安装了XAMPP控制面板v3.2.2,以便在我的机器上通过Web浏览器执行PHP程序。
"php.exe"文件位于位置"C:\xampp\php"。
文档根目录以保存PHP文件的位置为"C:\xampp\htdocs"。
我能够通过启动XAMPP软件(双击桌面上的XAMPP快捷方式)并在浏览器地址栏中输入程序文件的URL,如"http://localhost/html_playground/sample.php",来运行我创建并保存在目录C:\xampp\htdocs\html_playground中的PHP程序。
这样我就能够很好地运行PHP程序,但我想从Windows命令提示符中运行同一程序。
为此,我执行了以下步骤:
  • 进入高级系统设置(控制面板\系统和安全\系统\高级系统设置)
  • 然后点击环境变量
  • 选择变量Path
  • 然后点击编辑...按钮
  • 在现有字符串的分号结束后,通过在分号后添加一个空格,添加了字符串"C:\xampp\php"

最终的新字符串看起来像下面这样:

%USERPROFILE%\AppData\Local\Microsoft\WindowsApps; C:\xampp\php

  • 然后点击确定
  • 打开命令提示符
  • 使用cd命令进入命令提示符上的路径C:\xampp\htdocs\html_playground
  • 键入sample.php(包含我的PHP程序的文件)
然后,它没有显示程序的输出,而是在Sublime Text中打开了同一个文件(我用来编写代码的编辑器)。 sample.php文件包含以下PHP可执行代码
<?php 
   echo 'Hello World!';
?>

供您参考,我还附上了命令提示符窗口的截图:

Command Prompt Window

现在我的问题是:
  • 为什么我无法在命令提示符或Web浏览器中看到输出?
  • 我是否犯了任何错误?
  • 是否有必要像我通常做的那样启动XAMPP服务器,以便从命令提示符中执行程序以在Web浏览器中运行程序?
  • 在设置环境变量时是否犯了任何错误?
  • 真的需要设置环境变量吗?如果是为什么?如果不是为什么?
  • 由于PHP被认为是适合Web开发的语言,因此我认为最好在Web开发人员软件即Web浏览器中运行程序。但我不明白为什么人们坚持从命令行运行PHP程序而不是仅从Web浏览器运行相同的程序?

请有人通过回答我的问题并帮助我从命令提示符运行程序来帮助我。

我甚至尝试重新启动PC并运行php -v命令,但它也没有起作用。以下是相同的屏幕截图:

Command Prompt output after system restart


你需要运行php sample.php(首先实际启动程序,然后提供要解析的文件)。而且你应该能够从任何地方执行此操作,尽管你需要提供文件的完整路径,比如(从 c:)php C:\xampp\htdocs\html_playground\sample.php - junkfoodjunkie
@junkfoodjunkie :尝试过但没有成功。请看附带的问题更新和输出截图。 - PHPFan
你在添加了PHP环境变量后重启了电脑吗?重启后打开命令提示符,输入php -v查看是否生效。 - dsadnick
你确定文件实际上只叫做php吗? - junkfoodjunkie
这是 php.exe,但只使用 php 也可以。您不应该将空格放入环境变量中,虽然我不确定这是否是问题的原因。 - Charlotte Dunois
显示剩余2条评论
7个回答

12

如果你想运行CLI PHP,我强烈建议安装在windows.php.net上找到的原版PHP。让它安装到C:\php。我推荐这样做的原因是,如果你以后想使用Composer(你很可能会想用),它会在本地找到它。

现在你可以打开命令提示符并像下面这样运行脚本

C:\php\php.exe C:\path\to\php\script.php

针对您的问题

  1. 为什么我无法在命令提示符或Web浏览器中看到输出结果?因为输出结果被发送到命令行。浏览器请求是通过Web服务器发送到浏览器的。
  2. 是否必须像平常一样启动XAMPP服务器才能从命令提示符运行程序?对于CLI请求,不需要。PHP是一个可执行文件,可以自己运行。如果要进行浏览器请求,则需要运行XAMPP。
  3. 真的有必要设置环境变量吗?如果是,请说明原因。如果不是,请说明原因。其实没有必要。 CLI只会注意 php.ini 文件。 XAMPP 配置主要是针对 Apache 的。
  4. 但我不理解为什么人们坚持从命令行运行 PHP 程序的原因。主要原因是自动化任务。我在工作中有几个进程是我用 cron job 运行的。

如果我正在使用WAMP,如何让Composer检测到我的系统中的文件夹(c:\php)? - Jorge Peña
如果您正在运行WAMPServer 请参见此答案以获取另一种选项,该选项使用WAMPServer允许您在系统上同时拥有的任何一个PHP版本。 - RiggsFolly
@JorgePeña 嗯,显然Windows安装程序最终将C:\php添加为PATH。无论如何,从长远来看,保留CLI的基本安装程序更加清洁(当升级WAMP堆栈时,它们会与路径玩耍,导致混乱)。 - Machavity

10
在Windows 10中变量路径的逐步指南

更新:

通过左键单击Windows开始按钮,然后立即输入system env,Windows搜索将建议编辑系统环境变量,单击此选项并转到第4步。


  1. 右键单击 Windows 开始 按钮,选择 系统

Right Click Windows Start Button > System

  1. 点击系统信息

Click on System Information

  1. 点击高级系统设置

Click on Advanced System Settings

  1. 点击环境变量

Click on Environment Variables

  1. 系统变量下找到PATH,然后单击编辑

Under System Variables, Click on PATH then click Edit

  1. 点击新建,输入可执行文件的路径位置

Click New, Add Path location to executable file

  1. 在所有适用的面板上按确定应用,然后重新启动计算机

enter image description here


3

步骤1:右键单击桌面上的计算机图标,选择属性选项。

步骤2:在系统窗口中,单击左窗格中的高级系统设置

步骤3:在系统属性窗口中,从顶部水平菜单中选择高级选项卡,然后单击窗口底部提供的环境变量按钮

步骤4:在下一个称为环境变量的窗口中,转到系统变量(第二个网格)并找到名为Path的变量,然后单击编辑。如果不存在Path变量,则单击New。

如果您正在进行编辑,则在要添加的路径之前追加分号以分隔变量。

步骤5:获取您安装XAMPP的php路径。将此路径添加到出现的小对话框中的变量值中。

步骤6:按OK并关闭所有窗口。

步骤7:使用cmd打开命令提示符。

步骤8:cd到your_install_path / xampp / htdocs

步骤9:输入命令“php-i | more”

步骤10:没有第10步。


2
自从您安装了 XAMPP,您可以通过 XAMPP 控制面板 v3.2.2SHELL 窗口来运行 PHP

enter image description here

在我的测试用例中,我使用了一个小文件index.php,位于目录c:\xampp\htdocs\tester内,index.php的内容如下:
echo "This is output from command line "."\n";
if(!empty($argv)) {
foreach($argv as $key => $arg) {
if($key>0) {
echo "command line argument ".$key ." ". $arg."\n";
}
}
}

只需在命令行窗口中键入以下内容。
php C:\xampp\htdocs\tester\index.php var1=1 var2="lorem ipsum..."

输出

enter image description here


2
您可以通过使用-S标志,在浏览器中查看php代码的输出:
php -S <host/ip>:<port>

为了测试它,创建一个包含以下内容的sample.php文件:

<?php
echo "Hello World from built-in PHP server";
?>

在命令行中运行命令php -S localhost:8080不要包括http://)。

这将启动一个Web服务器,监听端口8080,并使用您所在的当前目录作为文档根目录。

打开浏览器并导航到http://localhost:8080。您应该看到您的“Hello World”页面。

注意:我的假设是您所在的目录中存在sample.php。如果端口8080已被占用,您可以使用其他端口,如808000


1

在与php.exe相同的目录中打开命令提示符,并使用要处理的文件作为参数调用程序。

C:\xampp\php\php.exe C:\xamp\htdocs\html_playground\test.php

如果test.php包含; <?php echo "Hello World"; ?> 那么命令提示符将输出“Hello World”并返回标准CMD CLI用户输入。

您的>php调用无法正常工作的原因很可能是由于PATH环境变量未包含PHP的正确位置,编辑您的系统变量并将'C:\xampp\php\;'添加到PATH字符串中。然后,您应该能够调用php C:\xamp\htdocs\html_playground\test.php以获得与上述相同的输出。


-2

简单、简短、完美的答案。尝试至少一次,您将获得成功:)

打开 C:\xampp\php(或者您安装它的路径可能不同)

现在运行 PHP.exe

现在只需按照以下步骤进行操作:

php -a 

然后开始编写你的代码

例如

<?php 
echo "Hello, world!"; 
?> 

然后按下CTRL+Z,然后按Enter

你好,世界! // 输出


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接