我有一台安装了 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
- 如果路径中有空格,请将脚本名称括在引号 (") 中
- 如果传递的任何参数中有空格,请将其括在引号中。