使用任务调度程序处理php脚本的奇怪问题

时间:2014-05-16 22:05:56

标签: php batch-file scheduled-tasks

我创建了一个任务计划,用于处理批处理文件,该批处理文件又处理php脚本(“sendtext.php”)以发送文本消息。 “sendtext.php”包括另一个php文件(“prefs.php”),它检查特定文本文件是否存在。如果是,则继续该过程,否则它会发出警报并重定向到不同的页面以首先创建文本文件。 现在,如果我手动运行批处理文件,它会发送文本消息。当我运行运行相同批处理文件的计划任务时,它会从包含文件(“prefs.php”)发出警报,因为它无法找到文本文件。所有php文件和批处理文件都在同一个文件夹中。 我认为这是任务计划的某种路径问题。 请帮忙!!!

2 个答案:

答案 0 :(得分:0)

当您正常运行脚本时,您正在从它所在的文件夹中运行它.Cron作业假设它们从不同的位置运行(或者甚至是不同的文件夹,例如,如果您在其下运行cron任务root用户假设您正在从目录/ root执行脚本。

包含文件的更好方法是:

include(__DIR__ . '/prefs.php');

然后,常量将确保路径相对于包含所述文件的当前脚本。即如果我的脚本是/var/www/vhosts/website.com/scripts/test.php,那么在包含时,它将在/var/www/vhosts/website.com/scripts/中查找prefs.php。

答案 1 :(得分:0)

在.bat文件上,使用更改目录命令(cd)到程序根目录。 在为php配置环境变量之后,您可以在下一行运行php,并且不会出现include,require等语句的任何问题。如果你没有配置环境变量,第二行应该指向你的php.exe目录:c:\ program files \ php ... php.exe

cd C:\inetpub\wwwroot\myprogram-dev\
php execute-this.php