我怎样才能从CLI运行一个PHP脚本,而无需预先“PHP”?

我试图创build一个脚本,运行的Web服务器将运行一个PHP文件通过exec() ,但我希望它这样做,而不会预先安装到它的php 。 可以这样做吗?

使用Windows 2008和XAMPP

不,在Windows中不能直接执行php文件。 你需要一个解决方法,比如在一个batch file中包装php filename.php命令。

它可以在Windows 7中完成 – 我不知道是否同样的想法适用于Windows 2008 – 但是,这种方法的影响可能超过了好处。

从本质上讲,你所需要做的就是使php-cli.exe成为打开.php文件的默认程序。

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

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

在Windows中相当于:右键单击.php文件,select“打开方式…”,浏览并selectphp-cli.exe可执行文件,并将其设为默认值。

我相信在Windows 2008中,可以通过控制面板>默认程序>将文件types或协议与程序关联来实现此function

一旦php-cli.exe可执行文件被设置为.php文件的默认应用程序,您应该已经实现了您的目标,带来一些副作用。

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

然而, assoc .php (至less在我的情况下)返回的文件types与我使用的编辑器相对应(并用ftype检查这个文件types给出了同一个编辑器的path)。

要解决此问题,请运行类似于以下内容(以pipe理员身份):

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

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

为了感兴趣,我的testing脚本是:test2.php(在浏览器中运行):

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

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

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

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