如何使用 Windows 计划任务运行 PHP 脚本?

Posted

技术标签:

【中文标题】如何使用 Windows 计划任务运行 PHP 脚本?【英文标题】:How do I run a PHP script using windows schedule task? 【发布时间】:2011-06-09 18:24:59 【问题描述】:

我已经在我的机器上安装了 localhost/server,我需要使用 windows schedule 任务运行一个 php 脚本。如何在计划任务的“操作”选项卡中添加路径/配置脚本以在特定时间段内运行?

【问题讨论】:

How to run a PHP file in a scheduled task (Windows Task Scheduler) 的可能重复项 您可以在这里找到答案 - ***.com/questions/39805601/… 【参考方案1】:

在您的系统上找到 php.exe 可执行文件,并使用 -f 参数将脚本文件的名称传递给它。

例子:

C:\Xampp\php\php.exe -f C:\Xampp\htdocs\my_script.php

参考:

Introduction to using PHP on the command line PHP command line options

【讨论】:

为什么上面的代码对我不起作用。我写了这段代码并将其保存为bat文件但没有成功 @Karthi 根据您的 PHP 代码编写方式,您可能还需要在任务计划程序中设置工作目录。 启动任务后我的php文件被删除了,请问是什么原因?【参考方案2】:

您可以使用PHP Command Line 来执行它,而不是尝试通过浏览器加载它。

在操作选项卡下,创建一个新操作并:

程序/脚本:指向您的 PHP.exe 文件 添加参数:-f /path/to/php/file.php

您也可以选择在脚本目录中启动它。

【讨论】:

【参考方案3】:

至少我尝试了一些建议但它不起作用所以我尝试了这个。

使用 bat 文件并安排执行该 bat 文件。

比如在bat文件中executephp.bat,这样写

c:\xampp\php\php.exe -f c:\xampp\htdocs\do_something.php

保存包含该行的 bat 文件。

转到 Windows 调度程序并创建一个新任务并在操作选项卡中,浏览指向 executephp.bat 并开始 -> 直接到您拥有该 executephp.bat 的目录。

例如,如果您将文件保存在 C:\xampp\htdocs 下,则将 C:\xampp\htdocs 放在开头。

记得在用户未登录时调用脚本。

一切都设置好了,它将毫无问题地执行。

【讨论】:

.bat 对我来说很好用,直接在命令行上的 php.exe 不起作用。 @RoccoTheTaco,为什么它不起作用?您是否确保用引号将文件名括起来 "【参考方案4】:

我是这样做的。

在运行框中:c:\location_of_my_php_installation\php.exe -f c:\location_of_my_php_file\php_file.php

在“开始于”框中:c:\location_of_my_php_installation\php.exe

【讨论】:

【参考方案5】:

在任务计划程序的任务属性中,将运行脚本的帐户更改为 SYSTEM 帐户。

当心!您应该只对您完全信任的脚本执行此操作 - 这样做会将脚本的权限提升到管理员之外。

【讨论】:

【参考方案6】:

这是怎么做到的。

Windows 调度程序 -> 创建新任务 -> 操作选项卡 -> 编辑

【讨论】:

【参考方案7】:

你可以直接调用你的本地主机url使用

explorer "http://localhost/yourFile.php"

【讨论】:

【参考方案8】:

我只是想留下我必须做的事情才能让它在服务器 2012 上工作。这就是之前所说的,但添加了引号并使用了“添加参数”框。所以在Task Scheduler->Actions->Edit Action.

Program/script: "C:\xampp\php\php.exe"
Add arguments: -f "<full path and filename>"
Start in: <Path to file>

(我必须使用“开始”,因为我在脚本中提到了类)

希望这会有所帮助。

【讨论】:

【参考方案9】:

要在 Windows 中创建调度程序,您需要:

    在您的服务器或系统上创建.bat 文件; 在您的.bat 文件中键入以下命令:“F:\xampp\php\php.exe” -f “F:/xampp/htdocs/sitefolder/test.php”; 在 Windows 的任务计划程序中设置计划程序时间和文件。

【讨论】:

请在代码格式化包装器(反引号)中包含命令(或命令?)并检查您的引号:它们可能应该是 " 或根本省略【参考方案10】:

创建计划任务 调度程序->动作->编辑动作

如果你有 php 文件

Program/script: powershell 
Add arguments: curl http://localhost/demo/cron.php

如果你有 MVC/CMS URL

Program/script: powershell
Add arguments: curl http://localhost/demo/controller/method

【讨论】:

【参考方案11】:

如果 answer given by Pekka 不起作用 (C:\Xampp\php\php.exe -f C:\Xampp\htdocs\my_script.php),请确保您启用了正确的 PHP 扩展,以及用于您正在使用的 PHP 版本的正确的 php.ini 文件。

我最近遇到了这个问题并解决了。我使用 PHP v5.4 运行嵌套在*** PHP 文件夹 (v5.3) 中的 script.php。当我从 v5.4 文件夹中运行 script.php 时,它正在使用具有不同扩展名的 v5.3 php.ini 文件,这导致 script.php 失败。

为了解决这个问题,这是我在任务计划程序中所做的:操作选项卡

程序脚本:

"C:\Program Files (x86)\PHP\v5.4\php.exe"

添加参数:

-c "C:\Program Files (x86)\PHP\v5.4\php.ini" -f "C:\Xampp\htdocs\script.php"

使用-c 选项,您可以指定应使用哪个php.ini 文件(stackflow answer)。

我通过关注stackflow answer 验证了正在使用的 php。

在命令行中,键入php -m 以检查启用了哪些扩展。 然后,使用 php --ini 检查 PHP 正在读取哪个 .ini 文件。

如果您安装了多个版本,则您使用的 PHP 版本可能没有使用正确的 ini 文件。

【讨论】:

出现错误“目录名无效。(0x8007010B)”,去掉Start in (optional)字段的引号,不支持。 WINDOWS TASK SCHEDULER: THE DIRECTORY NAME IS INVALID. (0X8007010B)【参考方案12】:

您不需要 .bat 文件,只需在任务调度程序中设置选项即可:

所以这里我只是指向 php.exe,然后在参数中

-f fullpath2PHP 文件

重要的是 Start in 部分 - 这应该是您的 php 文件(您要运行的文件)所在的文件夹。 比如:

文件位置 -f c:\inetpub\wwwroot\runthisplease\myFile.php

开始 c:\inetpub\wwwroot\runthisplease\

您可以通过创建 Windows 快捷方式来测试这一点(但您不能安排快捷方式链接)

【讨论】:

“开始”而不是“开始” 我认为“这应该是文件夹”您的脚本“位于”而不是“您的 php”。

以上是关于如何使用 Windows 计划任务运行 PHP 脚本?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PowerShell 在系统重新启动后延迟 10 分钟在 Windows 任务计划程序中安排任务?

使用 PHP 和 Windows 任务计划程序在退出时重试(1)

windows下php脚本怎么运行

Windows 任务计划程序执行PHP脚本

windows系统下怎样开启php的 php

如何安排不使用Windows任务计划程序运行bat文件?