【问题标题】:PHP - exec,shell_exec,system not workingPHP - exec,shell_exec,系统不工作
【发布时间】:2012-06-29 22:30:54
【问题描述】:

我读了很多类似的问题,但对我没有任何帮助

我使用 wamp 2.2、Apache 2.0、PHP V5.3.8

safe_mode=off - 从 php.ini 中删除的 disabled_functions 我正在尝试执行

exec("chrome.exe google.com");

什么都没有发生,当我尝试时

exec("calc");

尽管我将 apache 服务的用户更改为管理员并且我使用验证用户

,但 Windows 显示在不同用户中执行 calc 的奇怪消息
exec("whoami");

问题出在哪里?

【问题讨论】:

  • chrome.exe 是否在您当前的工作目录或 PATH 变量中?
  • 在 CMD 上执行 chrome.exe google.com 时效果很好
  • 我不得不问你是如何以管理员身份运行 apache 的,你不是作为服务运行吗?以及像 Windows Vista/7 这样的操作系统没有管理用户
  • 我的用户是管理员,我的操作系统是 win7,我以管理员身份运行 WAMP,而 apache 服务以管理员身份运行
  • @DaveRandom Windows 7 没有“管理员”帐户,它是一个用户组名称,包含管理员提升权限 Windows 7 或 Vista 中没有管理员用户。它不像 ubuntu,其中 root 帐户仍然存在,只是将其锁定,MS 将其删除为已在 Windows 域上使用多年的提升权限系统,因此之前手头以及为什么另一台 PC 可以将相同的权限授予另一个 Windows 的用户7/局域网上的Vista操作系统

标签: php exec


【解决方案1】:

CMD 和 php shell 的环境路径可能不一样。 你要么必须给出文件的完整路径,要么export首先在php中给出chrome.exe的路径

另外,我认为chrome.exe打开页面需要XServer,php无法在shell中打开图形界面。这些命令不会作为父级传递给实际的 shell,因此 php 文件无法为您“启动”应用程序。

请阅读 exec 函数的细节: PHP exec Reference

还可以尝试添加2> errors.txt 以查看程序执行中的错误(如果有)。

--

程序需要知道要连接到什么 X 服务器,并且它需要有权限连接到那个服务器。使用 DISPLAY 环境变量指定 X 服务器;如果您从终端运行 PHP 程序,这通常会自动设置 X,或来自 GNOME 面板或类似的东西;但是,如果您以其他方式运行 PHP 脚本,它可能不知道要连接到哪个 X 服务器。

X 有多种方法可以指定连接到服务器的权限,但最常见的一种是使用用户主目录中名为“.Xauthority”的文件。因为只有在 X 服务器上登录的用户才能读取这个文件,所以他们是唯一可以运行 GUI 程序的用户。因此,如果您以登录 X 服务器的同一用户身份启动 PHP 用户,那么您的权限应该没有任何问题。但是,如果 PHP 程序以不同的用户身份运行,则必须授予该用户访问 X 服务器的权限。

参考:http://bytes.com/topic/php/answers/838364-cant-launch-graphical-apps-php-exec-ubuntu-8-04-system (我知道该链接是针对 linux 的,对于 Windows 没有完全相同的解决方案,但exec() 仍然需要知道要引用哪个 X 接口)

【讨论】:

  • Windows 中通常没有 X 服务器。
  • 好的,我明白了.. 我尝试制作打开 chrome 的 jar 文件,它运行良好,但是当我从 php 调用它时没有任何反应.. 是因为 jar 文件被认为是 GUI 程序还是什么问题?
  • 您是否尝试使用 yourcommand 2> errors.txt 进行错误重定向?它会显示程序抛出了什么错误,这可能有助于更好地理解问题
【解决方案2】:

停止 Apache 作为服务运行。

当 Windows 运行服务时,它不会直接以启动服务器或管理的用户身份运行,因此它很可能会在服务环境中启动 chrome,因此您不会看到它在桌面上加载,有两种方法可以绕过这个

停止 apache 服务 浏览到您的 apache 目录并手动运行 httpd.exe 然后尝试您的脚本,它应该可以工作,或者如果它不需要通过网络请求运行,因此它不使用浏览器中的任何内容,您可以允许它使用c:\wamp\php\php.exe yourfile.php(你的php路径应该替换为c:\wamp\php

【讨论】:

    【解决方案3】:

    试试 PHP 脚本?

    <?php shell_exec('notepad.exe');?> 
    

    它正在工作。

    【讨论】:

      猜你喜欢
      • 2010-11-09
      • 2011-07-15
      • 2013-05-27
      • 2011-10-28
      • 1970-01-01
      • 2013-03-24
      • 1970-01-01
      • 2014-05-23
      相关资源
      最近更新 更多