如何从PHP创建一个新任务


PHP/Windows Task Scheduler - How to create a new task from php?

我有以下代码片段,我试图修改从php在windows中创建一个计划任务。我尝试了exec,然后pclose(popen($cmd)),没有成功。php脚本执行,但没有调用任何命令,并且我在任务计划程序gui中没有看到添加的计划任务。

如何从php调用schtasks.exe来创建一个新任务?

<

代码片段/strong>

    $daysList = join(", ", $days);

    $cmd = "c:''windows''system32''schtasks.exe /CREATE /SC WEEKLY /D '"$daysList'" /TN '"Action Item Reminder'" /TR '"php.exe  C:''wamp''www''aim''module''Application''src''Application''Controller''sendmail.php'" /ST 00:01 /f";
    pclose(popen("start /B ". $cmd, "r"));  

    //echo "c:''windows''system32''schtasks.exe /CREATE /SC WEEKLY /D '"$daysList'" /TN '"Action Item Reminder'" /TR '"C:''wamp''bin''php''php5.5.12''php.exe  C:''wamp''www''aim''module''Application''src''Application''Controller''sendmail.php'" /ST 00:01 /f";
    //echo '/CREATE /SC WEEKLY /D "'.  $daysList .'" /TN "Action Item Reminder" /TR "C:'wamp'www'aim'module'Application'src'Application'Controller'sendmail.php" /ST 00:01 /f"'; die();
    if (isset ($activate))
    {
        $emailOptionTable->update('true', 'Activate Reminders');
        $cmd = "c:''windows''system32''schtasks.exe /Change /TN '"Action Item Reminder'" /Enable";
        pclose(popen("start /B ". $cmd, "r"));  
    }
    else
    {
        $emailOptionTable->update('false', 'Activate Reminders');   
        $cmd = "c:''windows''system32''schtasks.exe /Change /TN '"Action Item Reminder'" /Disable";
        pclose(popen("start /B ". $cmd, "r"));
    }

编辑

Issue定位

Apache Error Log显示此消息

错误:帐户名和安全id之间没有映射。

(46,4):UserId:ERROR: No mapping between account names and security id .日志含义完成。

(46岁,4):用户标识:

我需要做什么来解决这个问题?

  1. 您需要有一个用户。所以你应该添加/RU "username"
    我建议以system方式运行任务。

  2. 您不需要完整的地址
    "c:'windows'system32'schtasks.exe">> schtasks.exe

  3. 您可以在windows命令行中使用">your file.txt"在行尾获得反馈。
    exp: dir> "c:'Directories.txt"

Your New Cod:

    $daysList = join(", ", $days);
    $cmd = "schtasks.exe /CREATE /SC WEEKLY /D '"$daysList'" /TN '"Action Item Reminder'" /TR '"php.exe  C:''wamp''www''aim''module''Application''src''Application''Controller''sendmail.php'" /ST 00:01 /f /RU System";
    pclose(popen("start /B ". $cmd, "r")); // OR exec($cmd);
    //echo "schtasks.exe /CREATE /SC WEEKLY /D '"$daysList'" /TN '"Action Item Reminder'" /TR '"C:''wamp''bin''php''php5.5.12''php.exe  C:''wamp''www''aim''module''Application''src''Application''Controller''sendmail.php'" /ST 00:01 /f /RU System";
    //echo '/CREATE /SC WEEKLY /D "'.  $daysList .'" /TN "Action Item Reminder" /TR "C:'wamp'www'aim'module'Application'src'Application'Controller'sendmail.php" /ST 00:01 /f /RU System"'; die();
    $cmd ="schtasks.exe /Change /TN '"Action Item Reminder'" /RU System";
    if (isset ($activate))
    {
        $emailOptionTable->update('true', 'Activate Reminders');
        pclose(popen("start /B ". $cmd." /Enable", "r")); // OR exec($cmd);
    }
    else
    {
        $emailOptionTable->update('false', 'Activate Reminders'); 
        pclose(popen("start /B ". $cmd." /Disable", "r")); // OR exec($cmd);
    }

好运。

$ daysList =加入("、"天美元);

$cmd = "schtasks.exe /CREATE /SC WEEKLY /D '"$daysList'" /TN '"Action Item Reminder'" /TR '"php.exe  C:''wamp''www''aim''module''Application''src''Application''Controller''sendmail.php'" /ST 00:01 /f /RU System";
pclose(popen("start /B ". $cmd, "r")); // OR exec($cmd);
//echo "schtasks.exe /CREATE /SC WEEKLY /D '"$daysList'" /TN '"Action Item Reminder'" /TR '"C:''wamp''bin''php''php5.5.12''php.exe  C:''wamp''www''aim''module''Application''src''Application''Controller''sendmail.php'" /ST 00:01 /f /RU System";
//echo '/CREATE /SC WEEKLY /D "'.  $daysList .'" /TN "Action Item Reminder" /TR "C:'wamp'www'aim'module'Application'src'Application'Controller'sendmail.php" /ST 00:01 /f /RU System"'; die();
$cmd ="schtasks.exe /Change /TN '"Action Item Reminder'" /RU System";
if (isset ($activate))
{
    $emailOptionTable->update('true', 'Activate Reminders');
    pclose(popen("start /B ". $cmd." /Enable", "r")); // OR exec($cmd);
}
else
{
    $emailOptionTable->update('false', 'Activate Reminders'); 
    pclose(popen("start /B ". $cmd." /Disable", "r")); // OR exec($cmd);
}

我想补充一点如果您在PHP服务器上使用IIS,则需要在IIS文件夹认证部分添加管理员用户。,您可以使用 exec () 而不是 pclose (popen ()) 函数