我使用PHP 5.4,IIS 7.5。
如果执行一个简单的命令,它可以工作:
<?php
exec("dir", $r);
print_r($r);
?>
但是如果打开 .exe 文件,它不起作用,页面正在加载,直到 php 超时并且不打开记事本:
<?php
exec("notepad.exe", $r);
print_r($r);
?>
如果在命令行中执行记事本的 php,它可以工作:
php -f <file>
我认为问题出在 IIS 上,但我不知道是什么。谢谢!
更新
我做了另一个测试用例但不起作用,页面完成加载但没有删除任务:
<?php
$r = exec("SCHTASKS.exe /Delete /TN TaskTest /F");
print_r($r);
?>
IIS_IUSRS 具有执行 schtask 的权限。
解决方案
记事本无法打开,因为它是一个交互式程序。
对于任务调度程序,将任务文件夹 (C:\Windows\System32\Tasks) 的读写权限授予 IUSR。