我在 Windows 7 64 位机器上运行 Apache 2.2.17 和 PHP 5.3.5。
我注意到,如果我尝试使用 exec()、system() 或任何其他函数通过 PHP 执行系统命令,它就不起作用。如果将它们粘贴到命令行窗口,完全相同的命令将起作用。这似乎会影响所有不是最简单的命令行程序的程序。即使是打开记事本的简单尝试也不起作用,例如 system('C:/Windows/system32/notepad.exe')。
这可能是什么原因造成的?
谢谢
阅读
例如
<?php exec('C:\\WINDOWS\\system32\\psexec.exe \\192.168.1.224 -u myuser ... etc.
我还在引用的讨论中看到以下内容:
引用; 在 Windows 中,exec() 发出对“cmd /c your_command”的内部调用。这意味着您的命令必须遵循 cmd.exe 强加的规则,其中包括完整命令周围的一组额外引号:
当前的 PHP 版本考虑到这一点并自动添加引号,但旧版本没有。尾声:
还有一些关于在命令所在的文件夹上设置 Windows 权限的讨论,我可以想象这在 Vista 或 Windows 7 机器上可能是相当令人痛心的。您可能需要以某种方式允许访问 WAMPserver 本身。
编辑:
我能想到的唯一其他建议是:
授予对可执行文件和包含它的文件夹路径的 EVERYBODY 的完全访问权限
检查服务器错误日志以查看是否有包含任何有用信息的错误消息
我又想到一件事:
祝你好运!
来源:推荐阅读:很多人讨论很多问题的解决方案
不幸的是,这些解决方案都不适合我。我已经改变了我的方法,不会使用 PHP 来启动可执行文件。