2

我在 Windows 7 64 位机器上运行 Apache 2.2.17 和 PHP 5.3.5。

我注意到,如果我尝试使用 exec()、system() 或任何其他函数通过 PHP 执行系统命令,它就不起作用。如果将它们粘贴到命令行窗口,完全相同的命令将起作用。这似乎会影响所有不是最简单的命令行程序的程序。即使是打开记事本的简单尝试也不起作用,例如 system('C:/Windows/system32/notepad.exe')。

这可能是什么原因造成的?

谢谢

4

2 回答 2

1

阅读

例如

<?php exec('C:\\WINDOWS\\system32\\psexec.exe \\192.168.1.224 -u myuser ... etc.

我还在引用的讨论中看到以下内容:

引用; 在 Windows 中,exec() 发出对“cmd /c your_command”的内部调用。这意味着您的命令必须遵循 cmd.exe 强加的规则,其中包括完整命令周围的一组额外引号:

http://ss64.com/nt/cmd.html

当前的 PHP 版本考虑到这一点并自动添加引号,但旧版本没有。尾声:

还有一些关于在命令所在的文件夹上设置 Windows 权限的讨论,我可以想象这在 Vista 或 Windows 7 机器上可能是相当令人痛心的。您可能需要以某种方式允许访问 WAMPserver 本身。

编辑:

我能想到的唯一其他建议是:

  • 授予对可执行文件和包含它的文件夹路径的 EVERYBODY 的完全访问权限

  • 检查服务器错误日志以查看是否有包含任何有用信息的错误消息

我又想到一件事:

  • 将您的可执行文件复制到 C:\WINDOWS\SYSTEM32,并像“ping”一样运行它。

祝你好运!

来源:推荐阅读:很多人讨论很多问题的解决方案

http://php.net/manual/en/function.exec.php

于 2012-08-28T17:21:26.820 回答
0

不幸的是,这些解决方案都不适合我。我已经改变了我的方法,不会使用 PHP 来启动可执行文件。

于 2012-08-30T11:55:15.580 回答