我读了很多类似的问题,但对我没有任何帮助
我正在使用 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");
问题出在哪里?
停止 Apache 作为服务运行。
当 Windows 运行服务时,它不会直接作为启动服务器或管理的用户运行,因此它很可能在服务环境中启动 chrome,因此您不会看到它加载到桌面上,有两种方法可以解决这个问题
停止 apache 服务浏览到您的 apache 目录并手动运行 httpd.exe 然后尝试您的脚本它应该可以工作,或者如果它不需要通过网络请求运行,因此它不使用浏览器中的任何内容,您可以允许它使用c:\wamp\php\php.exe yourfile.php
(你的 php 路径应该被替换为c:\wamp\php
)
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 接口)
试试 PHP 脚本?
<?php shell_exec('notepad.exe');?>
它正在工作。