如何从 CLI 运行 php 脚本而不在其前面添加“php”?

如何从 CLI 运行 php 脚本而不在其前面添加“php”?

我正在尝试创建一个从 Web 服务器运行的脚本,该脚本将通过 运行 php 文件exec(),但我希望它在执行此操作时不在其前面添加php。可以这样做吗?

使用 Windows 2008 和 XAMPP

答案1

不可以,php 文件不能在 Windows 中直接执行。您需要一种解决方法,例如将php filename.php命令包装在批处理文件中。

答案2

这可以在 Windows 7 中实现 - 我不知道同样的想法是否适用于 Windows 2008 - 但是,这种方法的效果可能超过其好处。

本质上,您需要做的就是使php-cli.exe默认程序打开 .php 文件。

我通过两种方式做到了这一点,但我不确定是否需要两种方式。

首先,将 php-cli.exe(或者我认为是 php.exe)设为打开 .php 文件的默认程序。

在 Windows 中,这相当于:右键单击 .php 文件,选择“打开方式...”,浏览并选择 php-cli.exe 可执行文件,然后“设置为默认值”。

我相信在 Windows 2008 中,可以通过控制面板 > 默认程序 > 将文件类型或协议与程序关联来访问此功能

一旦将 php-cli.exe 可执行文件设置为 .php 文件的默认应用程序,您就应该实现您的目标,但会产生一些副作用。

此时,如果您从命令提示符运行 scriptname.php,它将由 php-cli.exe 执行,并且输出显示在提示符下方 - 这可能是您想要的;但是,如果您双击该文件,它也将由 php-cli.exe(而不是您喜欢的编辑器)执行 - 这可能是您不想要的。

但是,assoc .php(至少在我的情况下),返回的文件类型与我使用的编辑器相对应(并且检查此文件类型ftype给出了同一编辑器的路径)。

要解决此问题,请运行类似以下命令(以管理员身份):

ASSOC .php=PHPScript && FTYPE PHPScript="C:\Program Files (x86)\Xampp\php\php.exe" %1 %* 

此后,在浏览器中访问我的测试 PHP 文件,执行第二个测试脚本(不使用 php 前缀)并显示结果。

出于兴趣的考虑,我的测试脚本是:test2.php(在浏览器中运行):

<?php
echo exec('test1.php');
?>

test1.php(在同一文件夹中):

<?php
echo date('r');
?>

(在 Windows 7 上使用 XAMPP 1.7.7/PHP 5.3.8 测试)

相关内容