好的,有问题。我的PHP脚本除1行外都有效
该行尝试使用exec()
执行外部命令。
我明白了:
警告:exec():无法分叉
我试着寻找答案。有几个网站说我必须在cmd.exe
上设置权限。无论我是在system32
还是syswow64
,我都不确定。
还不确定要添加的用户。 ISUR
或我从lime
获得的用户(get_current_user()
。
Windows不允许我将任何用户添加到安全列表中(右键单击文件,属性,安全性,编辑)。
它也不允许我使用icacls cmd.exe /grant IUSR:F
(在system32中拒绝访问)(句柄在syswow64中无效)
我已添加完全访问权限(ISUR
,SYSTEM
,SERVICE
,NETWORK
SERVICE
,lime
,{{1 }}和Everyone
)到将创建文件的文件夹。我意识到这太过分了,不得不削减它。
我将不得不在 Windows 7x64 (开发机器)&amp ;; Windows Server 2012 (生产)。
我找到的很多例子都是针对以前的系统,或者没有详细说明。
有人可以帮帮我吗?我需要让脚本正常工作。感谢
答案 0 :(得分:2)
您没有提供足够的信息来回答您的问题......
如果您的PHP脚本将在Windows操作系统中执行,也许您可以查看COM functions,而不是exec()。 COM功能可以让您更好地控制您要执行的操作(可能是Office自动化?)
COM比exec()更强大,因为它允许您控制生成的应用程序窗口本身(如果有的话)。例如,您可以使用不可见窗口或最小化窗口启动新进程。
可以在PHP exec() page itself中找到一些示例。
基本上,您可以执行以下操作来运行应用程序:
$shell = new COM("WScript.Shell");
$shell->Run("notepad.exe");
$shell = null;
谷歌搜索“PHP WScript.Shell”将产生很多关于这个主题的结果。
编辑:此外,您还需要将其添加到IIS web.config中:
<identity impersonate="true" userName="youruser" password="yourpass"/>`
这将设置IIS在启动进程时将模拟的用户。