我试图创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)