Php 警告:exec():无法分叉
好的,有问题。我的PHP脚本除了一行之外都可以正常工作。Php 警告:exec():无法分叉,php,security,windows-server-2012,windows64,Php,Security,Windows Server 2012,Windows64,好的,有问题。我的PHP脚本除了一行之外都可以正常工作。 此行尝试使用exec()执行外部命令 我得到: 警告:exec():无法分叉 我试着寻找答案。有几个网站说我必须在cmd.exe上设置权限。我不确定是在system32还是在syswow64中这样做 也不确定要添加什么用户ISUR或从get\u current\u user()获取的用户(lime) Windows不允许我将任何用户添加到安全列表(右键单击文件、属性、安全、编辑) 它也不允许我使用icacls cmd.exe/grant
此行尝试使用
exec()
执行外部命令
我得到:
警告:exec():无法分叉
我试着寻找答案。有几个网站说我必须在cmd.exe
上设置权限。我不确定是在system32
还是在syswow64
中这样做
也不确定要添加什么用户ISUR
或从get\u current\u user()获取的用户(lime
)
Windows不允许我将任何用户添加到安全列表(右键单击文件、属性、安全、编辑)
它也不允许我使用icacls cmd.exe/grant IUSR:F
(在system32中拒绝访问)(句柄在syswow64中无效)
我已经将完全访问权限(ISUR
,SYSTEM
,SERVICE
,NETWORK
SERVICE
,lame
,所有人
,以及IIS\u-ISURS
)添加到将创建文件的文件夹中。我意识到这太过分了,所以我必须减少这一点
我必须在Windows7x64(开发机器)和WindowsServer2012(生产)中都这样做
我发现很多例子要么是针对以前的系统,要么是不够详细
有人能帮我吗?我需要让脚本正常工作。谢谢你没有提供足够的信息来回答你的问题
如果您的PHP脚本将在Windows操作系统中执行,也许您可以查看,而不是exec()。COM功能将使您能够更好地控制自己的工作(也许是办公自动化?)
COM比exec()强大得多,因为它允许您控制生成的应用程序窗口本身(如果有)。例如,可以使用不可见窗口或最小化窗口启动新进程
可以在中找到一些示例
基本上,您可以执行以下操作来运行应用程序:
$shell = new COM("WScript.Shell");
$shell->Run("notepad.exe");
$shell = null;
用谷歌搜索“phpwscript.Shell”将在这个主题上产生很多结果
编辑:此外,您还需要将其添加到IIS web.config中:
<identity impersonate="true" userName="youruser" password="yourpass"/>`
`
这将设置IIS在启动进程时模拟的用户。我正在使用命令行应用程序pdftk将PDF&FDF合并为新的PDF。我将在谷歌上搜索php WScript.Shell,看看它是否能满足我的需要。作为测试,我尝试打开计算器。我什么都没有。没有计算器&没有错误。你的PHP是在安全模式下运行吗?不。它不是在安全模式下。在我的答案中添加了一个解决方案