2010-10-08 120 views
0

我需要在服务器端使用IE8运行JavaScript代码 (该javascript与activeX对象一起使用) 但是我需要从PHP的命令行运行它。通过PHP运行Javascript通过PHP

简而言之,我将在2003 Windows服务器上安装apache + php,并且php将使用system()来执行运行javascript页面的iexplore。

我想知道,如果这在逻辑上是可能的,因为我可以看到一些陷阱:

  1. PHP可能无法不登录的用户执行IEXPLORE
  2. IEXPLORE可能不正确运行javascript以与ActiveX对象交互
  3. 当JS完成运行时,iexplore可能不会退出。

我会尽快做出一个小测试用例,但任何关于这个问题的指针都会被推断出来。

编辑:

现在,我意识到这是一个关于做的事情(读,错了)的方式轮,我们的目标是使从一个中央位置,而不是客户端机器上戴莫标签打印机打印(此JS来自哪里)。 Dymo SDK提供了几种与其打印机进行交互的方式,但我仍在寻找一种使用纯PHP的方式。我认为可以使用他们的示例cli二进制文件之一。

+5

@yarek:我的坦白道歉,但你提出的声音真的疯了。你想达到什么目的?也许社区可以提出一个更明智的方式来实现你的目标。 – spender 2010-10-08 12:09:28

+0

与@spender一致 - 听起来像希斯罗宾逊可能发明的,如果他是程序员。 (ActiveX?是否有人仍然在浏览器中使用它?我认为它至少在5年前已被委托给真正糟糕的想法的垃圾箱) – Spudley 2010-10-08 12:24:30

+0

PHP对运行它的系统具有很多**控制权。你可以用PHP做什么,你可以用PHP做什么 – stevendesu 2010-10-08 14:17:44

回答

0

Dymo是否有从命令行与它交互的方式?如果是这样,您可以通过shell_exec()轻松发送命令。 http://www.php.net/manual/en/function.shell-exec.php

当你能够通过命令行控制某些东西时,这通常是最简单的选择。有时你需要更多的控制权,但是(例如交互式命令行程序),有时你想运行的程序甚至不是基于命令行的。在这些情况下,您可能需要proc_open()(http://www.php.net/manual/en/function.proc-open.php)或exec()(http://www.php.net/manual/en/function.exec .php)

只要确保您使用exec()即可重定向输出!。如果不这样做可能会导致程序无限期挂起。

从PHP手册:

注:

如果程序开始使用此功能,以便它继续在后台运行,该程序的输出必须重定向到一个文件或另一个输出流。否则会导致PHP挂起,直到程序执行结束。

0

确保更新您的Service Pack和AntiVirus定义。我可以在这里预见许多许多潜在的安全问题。

请记住,IE中的JavaScript与网页上下文一起运行。当您刷新/导航页面时,旧的JavaScript执行状态将被清除,并开始一个新的状态。

这里有一个具体问题吗?

+1

在*应该*限制权限的服务帐户的上下文中运行IE是一个开箱即用的漏洞,如果它甚至可以工作。不要这样做。 – spender 2010-10-08 12:15:04

+0

这不是一个真正的问题,因为一切都是在本地生成和控制的,绝对没有任何与公众互动。 – 2010-10-10 01:59:50