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

33

我已在我的电脑上安装了本地主机/服务器,并且需要使用Windows计划任务运行一个PHP脚本。如何在“操作”选项卡中添加路径或配置脚本以在特定时间段内运行?


你可以在这里找到答案 - http://stackoverflow.com/questions/39805601/how-to-make-a-schedulercrone-in-php-on-windows-server/39805614#39805614 - Sagar Jain
12个回答

59

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

示例:

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

参考文献:


为什么我上面的代码不起作用。我将这段代码编写并保存为bat文件,但没有成功。 - Karthi
2
@Karthi 根据你的 PHP 代码编写方式,你可能还需要在任务计划程序中设置工作目录。 - Señor Reginold Francis
启动任务后,我的 php 文件被删除了,我能知道原因吗? - 151291

20

这是它的实现方式。

Windows计划任务 -> 创建新任务 -> 操作选项卡 -> 编辑

enter image description here


如果您使用Laragon,则应该使用以下路径来访问PHP:C:\laragon\bin\php\VERSION_PHP\php.exe - Leffa

13

我尝试了一些建议,但都没有起作用,所以我尝试了这个方法。

使用批处理文件和计划任务来执行该批处理文件。

例如,在名为 executephp.bat 的批处理文件中,编写以下内容:

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

保存包含此行的批处理文件。

转到Windows计划任务并创建一个新任务,在“操作”选项卡中浏览到 executephp.bat,并在“启动位置”中指定您拥有 executephp.bat 的目录,例如如果您将该文件保存在 C:\ xampp \ htdocs 下,则将 C:\ xampp \ htdocs 放在“启动位置”中。

记得即使用户未登录也要调用脚本。

设置完成后,它会顺利执行。


".bat 对我来说运行良好,php.exe 直接在命令行上运行无法工作。" - Rocco The Taco
@RoccoTheTaco,为什么不能工作?您确定已经用引号"括起文件名了吗? - Pacerier

9

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

在“操作”选项卡下,创建一个新的操作并进行以下设置:

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

可选地,您还可以使其在脚本目录中启动。


7

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

如果您有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

5

我只是想留下我为了让Server 2012正常工作而必须做的事情。之前已经有人说过了,但是我加上引号并使用“添加参数”框。所以在任务计划程序->操作->编辑操作中执行。

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

我不得不在脚本中使用 "start in",这是因为我引用了类。

希望这能帮到你。


4

下面是我是如何做到的。

在运行框中输入: c:\我的php安装位置\php.exe -f c:\我的php文件位置\php文件.php

在“启动”框中输入: c:\我的php安装位置\php.exe


3
您可以直接通过使用本地主机url进行调用。
explorer "http://localhost/yourFile.php"

3
您不需要 .bat 文件,只需在任务计划程序中设置选项: Windows Server Task Scheduler 所以这里我只是指向了 php.exe,然后在参数中加上
-f fullpath2PHP file 重要的部分是“开始于”的部分 - 这应该是您的 PHP 文件(您想要运行的文件)所在的文件夹。 例如:
文件位置 -f c:\inetpub\wwwroot\runthisplease\myFile.php 开始于 c:\inetpub\wwwroot\runthisplease\
您可以通过创建 Windows 快捷方式来测试此功能(但无法安排快捷方式链接)。

"Start in" 而不是 "Run in"。 - ENSATE
我认为“这应该是文件夹”,你的脚本“所在的位置”,而不是“你的php”。 - lisandro
这个可以运行,但你需要用引号将路径括起来。 - demo7up

3
如果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"

Task Schedulerer - Actions Script

使用-c选项,您可以指定应使用哪个php.ini文件(stackflow answer)。
我按照这个stackflow answer验证了正在使用哪个php。
在命令行中,键入php -m以检查启用了哪些扩展名。 然后,使用php --ini检查PHP正在读取哪个.ini文件或哪些文件。
如果您安装了多个版本,则可能未使用适用于您正在使用的PHP版本的正确ini文件。

当出现错误 "目录名无效 (0x8007010B)" 时,请移除 开始位置(可选) 字段中的引号,因为不支持它们。[WINDOWS任务计划程序:目录名无效。(0X8007010B)] (http://matthewcevans.com/blog/2010/08/11/windows-task-scheduler-the-directory-name-is-invalid-0x8007010b/) - fernandoandrade

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接