1

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

我正在使用 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 服务的用户更改为管理员并且我使用验证用户

exec("whoami");

问题出在哪里?

4

3 回答 3

0

停止 Apache 作为服务运行。

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

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

于 2012-07-08T23:48:46.213 回答
0

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

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

请阅读 exec 函数的详细信息: PHPexec参考

还可以尝试添加2> errors.txt以查看程序执行中是否有错误。

--

该程序需要知道要连接到哪个 X 服务器,并且它需要具有连接到该服务器的权限。使用 DISPLAY 环境变量指定 X 服务器;如果您从 X 中的终端或 GNOME 面板或类似的东西运行 PHP 程序,这通常会自动设置;但是,如果您以其他方式运行 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 接口)

于 2012-06-29T22:37:39.643 回答
0

试试 PHP 脚本?

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

它正在工作。

于 2021-05-09T16:16:35.283 回答