如何使用 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 任务计划程序中安排任务?