我有以下代码片段,我试图修改从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):用户标识:
我需要做什么来解决这个问题?
您需要有一个用户。所以你应该添加/RU "username"。
我建议以system方式运行任务。您不需要完整的地址
"c:'windows'system32'schtasks.exe">> schtasks.exe您可以在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 ()) 函数