我正在尝试让 exec 在 Windows 服务器上工作并收到错误消息“unable to fork”。在谷歌搜索了一下这个问题之后,似乎推荐的修复方法是授予 IUSR 帐户对 c:\Windows\System32\cmd.exe 的读取和执行权限。
但这一定是一个主要的安全漏洞吧?安全吗?是否有另一种方法来执行 [从 php] 驻留在服务器上的 exe?
最佳答案
它需要执行 cmd.exe 因为当 Windows PHP 看到这个时:
exec("foo -bar -baz");
它调用这个:
cmd /c foo -bar -baz
如果您让用户输入参数,这只是一个安全漏洞。 I.E.,你不应该这样做:
// DO NOT DO THIS!
exec("foo -bar=" . $_GET['bar']);
相反,您应该使用 escapeshellarg 清理您的参数.
// This is okay. (Be sure foo.exe can handle unexpected input!)
exec("foo -bar=" . escapeshellarg($_GET['bar']));
关于php - PHP 执行安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1295346/