【问题标题】:PHP exec not workingPHP 执行不工作
【发布时间】:2012-08-28 16:34:02
【问题描述】:

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

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

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

谢谢

【问题讨论】:

  • 在脚本开始时执行error_reporting(E_ALL); 并重试。你看到什么了?日志说什么?
  • 修复 php,ini - 并提供您想要的各种选项。
  • 可能是 php.ini 中的 disable_functions 选项。见adamish.com/blog/archives/123

标签: php system


【解决方案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 本身。

编辑:

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

  • 授予对可执行文件及其所在文件夹路径的每个人的完全访问权限

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

我又想到了一件事:

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

祝你好运!

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 很公平。有时需要使用正确的工具完成工作,而不是强迫错误的工具完成工作。
    猜你喜欢
    • 1970-01-01
    • 2013-04-16
    • 2013-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-22
    • 1970-01-01
    相关资源
    最近更新 更多