服务器2008的任务计划程序可以运行php文件吗?

服务器2008的任务计划程序可以运行php文件吗?

我有一台安装了 php5 (通过 fastcgi 运行) 的 2008 64 位服务器。我想每天凌晨 3 点运行一个 .php 脚本。我设置了一个任务,“上次运行结果”显示“%1 不是有效的 Win32 应用程序”

事件属性描述了更多失败:

“任务计划程序无法在任务“\Something”的实例“{88cc01f4-9554-4b8f-9836-34d806337d7f}”中启动操作“D:\InetPub\tools\something\build.php”。附加数据:错误值:2147942593。”

任务类别:操作启动失败:

是否可以使用任务计划程序运行脚本?如果不行,我应该如何自动执行 php 脚本?

谢谢

答案1

我主要在 *nix 机器上运行 php,所以对此不确定。

通常,当有人请求包含一些 php 的页面时,Web 服务器就会运行 php 脚本。

在您的 Server 2008 设置中,.php 的默认操作可能设置为另一个操作(例如“在编辑器中打开文件”),而不是“使用 php.exe 运行脚本”

您必须调用 php 解释器并使用实际脚本作为命令行参数。

就像是

php.exe d:\InetPub\tools\something\build.php

您也可以通过将 .php 文件与正确的程序关联来实现相同的效果

答案2

完全可以将 php 脚本安排为计划任务运行,并且可以将参数传递给 php 脚本,这与通过浏览器将参数传递给 PHP 脚本类似但不完全相同。您将无法通过 $_REQUEST 访问传递的参数。您将改用 $_SERVER['argv'] 并自行解析。

运行时环境有所不同,因此如果您的脚本设计为既可以从浏览器运行,也可以从命令行运行,则可以使用

if(PHP_SAPI=='cli'){
 //this is command line interface
}else{
 // this is a different interface
}
  • 通过明确指定或在任务设置面板中设置当前目录,确保 Windows 知道 php.exe 的完整路径。
  • 将要运行的脚本的完整路径传递给 php.exe
  • 如果路径中有空格,请将脚本名称括在引号 (") 中
  • 如果传递的任何参数中有空格,请将其括在引号中。

相关内容