【问题标题】:How to execute php file from windows batch file如何从Windows批处理文件执行php文件
【发布时间】:2015-06-29 13:28:04
【问题描述】:

我有 Windows 批处理文件,并且在任务调度程序中安排了它。

任务计划工作正常,但 Windows 批处理文件不执行

它在一个 php 文件中。我正在学习 php,windows 批处理文件是以前的员工编码的。

我从 Windows 批处理文件中获取的以下代码。 路径是正确的, -f 的目的是什么?你能纠正我的代码吗?

【问题讨论】:

  • 我希望@echo onC:\php\... 之间有一个新行?如果没有,这将行不通。顺便说一句:echo on 是默认设置,因此再次打开它没有多大意义。通常你不会关心计划任务显示什么,所以它根本不重要;-)
  • 你知道什么叫不叫吗?在文件开头添加一个简短的echo Successfully started %TIME% %DATE% >> C:\temp\task.log 可能会有所帮助。这会在批处理开始时创建一个简短的日志
  • 第一行:@ECHO ON 第二行:C:\PHP5.3\php.exe -f "C:\www2\cron.php"
  • 如何测试上述命令是否有效。 ?当我通过服务器执行 cron.php 时,它的工作。问题是Windows批处理文件代码。你能帮忙吗

标签: php windows batch-file exec executable


【解决方案1】:

命令行选项列表可以在这里找到http://php.net/manual/en/features.commandline.options.php

在你的情况下 -f 代表 Parse and execute File

【讨论】:

    【解决方案2】:

    将您的批次更改为以下内容:

    @ECHO ON
    echo Before php %TIME% %DATE% >> C:\temp\task.log
    C:
    Cd \www2
    C:\PHP5.3\php.exe -f "C:\www2\cron.php" >> C:\temp\task.log
    echo After php %TIME% %DATE% >> C:\temp\task.log
    

    只要你有 echo 命令和 php 解释器的调用在一行上,这只会在屏幕上输出一个无意义的文本。

    第一个回显可以帮助您诊断问题:如果正在调用计划任务,您将看到此记录在task.log

    为了确保工作目录设置为 C:\www2(cron.php 将在那里查找文件,除非它们使用完整路径寻址)我们在运行 php 之前更改到该目录。

    如果 php 打印任何错误消息或信息,我们会将输出重定向到同一日志,否则您将看不到这一点。您应该不时删除该日志,因为它可能会大幅增长。由您决定要保留或删除哪些日志记录语句;-) 您甚至可以按大小滚动日志,我敢打赌这里有关于 SO 的问题,它将向您展示如何做到这一点;-)

    【讨论】:

    • 我更改了我的批处理文件并看到日志文件具有类似... 成功启动 9:59:00.03 Mon 06/29/2015 成功启动 10:00:00.15 Mon 06/29/2015 成功开始 10:01:00.04 Mon 06/29/2015 成功开始 10:02:00.04 Mon 06/29/2015 成功开始 10:03:00.03 Mon 06/29/2015
    • 这是重要信息。所以我们可以假设 PHP 脚本被调用。所以 PHP 或者代码里面肯定有东西。在您的问题中发布代码,以便我们查看。
    • 我发布了我的代码,当我从sername/cron.php 执行“cron.php”时,它调用 xml 并且工作正常。你能指导我如何在 php 文件中插入新的示例代码并测试它是否 cron.php 正在调用。 ?
    • 我知道代码很复杂,指导我在cron.php文件中创建简单的方法,并测试cron.php文件是否执行。或者告诉我你的建议。
    • @user3442289 我在批处理中添加了一些内容,请重试
    猜你喜欢
    • 2012-07-28
    • 2011-04-19
    • 1970-01-01
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-14
    • 2016-09-09
    相关资源
    最近更新 更多