我查阅了所有其他有关此问题,但他们没有帮助,所以:
我在域内的Windows Server 2003计算机上运行xampp(lite),apache作为服务安装 . 问题是:PHP函数exec,system,passthru等什么都不做,没有错误消息(apache的日志级别是debug,php error_reporting是E_ALL),没有程序执行,什么都没有,就好像函数调用isn'在那里
我尝试了不同的方法: exec, system, ..; proc_open 和 WScript.Shell COM 对象,没有任何效果 . 我尝试使用绝对路径,给用户权限,尝试了大量不同的.exe执行不同的操作,没有任何工作,没有执行任何操作 .
我给了Apache服务 my username ;给了它 own apache user ;给了系统用户并勾选了“ Allow interaction with desktop ” .
php safe_mode is off ,也没有禁用任何功能 .
当运行apache而不是服务时,一切都运行良好 .
知道什么可能是错的吗?
TIA
2 回答
如果您尝试从Vista中的服务启动GUI应用程序,则会遇到很多麻烦 . 作为一项安全功能,Vista使用“交互式服务检测”调解服务与桌面的交互 .
这意味着,如果您将PHP作为Apache服务的模块运行,则无法使用任何方法启动GUI应用程序 . 这样的事情是行不通的:
$ WshShell =新COM(“WScript.Shell”); $ oExec = $ WshShell-> Run(“notepad.exe”,7,false);
因此,如果您想使用Apache / PHP作为启动GUI应用程序的代理,您需要将Apache作为控制台应用程序运行 .
首先,如果Apache已作为服务安装,则需要使用服务管理单元将其启动类型设置为“manual” . (%SystemRoot%\ system32 \ services.msc)在开始菜单搜索框中搜索服务 .
然后将一个快捷方式添加到C:\ apache \ bin \ httpd.exe(或安装Apache的任何位置)到Startup文件夹,并将该快捷方式设置为最小化 . 你可以使用像TrayIt这样的应用程序!强制Apache进入系统托盘 .
然后使用PHP网站上列出的任何方法,您将能够从PHP打开Windows应用程序并查看它的GUI .
检查您的PHP.ini文件,只是包含您提到的那些不允许的设置 . 虽然不是XAMPP版本的标准,但值得检查 .
你说你没有得到任何错误,我会假设你的服务器被设置为服务,因此使用exe,system,passthru等发送的任何命令都将在后台完成,所以你不会看到它们正在运行,但你应该能够捕获数据 .
试试上面的内容,看看会发生什么,你应该从命令行得到一个响应,否则,它可能是由于权限 .