2010-10-08 148 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