2012-01-24 35 views
1

我想爲我建立我自己的我的本地服務器上使用的web應用程序剪貼板訪問,我想出了這個:本地服務器上的PHP exec命令 - 爲什麼這不起作用?

首先一個批處理文件,從另一個文件上寫着:

clip < %1 

然後在我的PHP文件:

exec("mybatch.cmd $file_with_text_to_be_copied"); 

需要的,只是直接執行沒有返回變量...

在任何日誌沒有錯誤,但它只是沒有按」工作。

我並不感到驚訝它不起作用,考慮到剪貼板的安全性,但我無法弄清楚爲什麼 - 鉻或Apache或誰甚至知道我在做什麼?

我甚至嘗試一些我看網上有關更改Apache服務帳戶被另一帳戶用戶身份運行(我認爲這是系統帳戶 - 不記得 - 但它是什麼我在網上看了) 但沒有改變...

順便說一下Windows機器 - 以防萬一錯過了。

+0

很難說爲什麼它不能像你想要的那樣工作。可能是因爲windows系統上沒有叫'clip'的命令? – hakre

+0

你嘗試過passthru(「clip kba

+0

還沒有嘗試passthru ...我會的。除非test是一個文件,否則clip user1167442

回答

0

剪貼板是會話的屬性,因此您在桌面會話中與ctrl-c和好友一起使用的剪貼板與您網絡服務器看到的剪貼板不同。

因此,如果沒有任何助手應用程序(在您的會話中運行),這是不可能的。

順便說一句:這很好,這是不可能的。考慮一下,直到你相信它。

+0

http://technet.microsoft.com/en-us/library/cc778940(WS.10).aspx – hakre

+0

@hakre:這完全證實了我說的話:沒有一個幫助者應用程序訪問一個會話無法在另一個剪貼板中看到它 - 在這種情況下,終端服務是導出剪貼板的助手應用程序,並且RDP客戶端正在使用它。 –

+0

Ouch so mu ch帽。而且,耶,這就是我加入它的原因。評論有問題? – hakre

0

您是否嘗試過使用system()函數?使用系統來顯示輸出。然後你可以找到解決可能的錯誤的方法。

例與系統功能:

$response = system('ls -al', $return); 
echo $response . "<br />" . $return; 
+0

'ls -al'是一個通用命令,它不是會話特定的(除了在Windows上相當不尋常) –

+0

它只是一個示例。當使用exec() - 「如果一個程序以這個函數啓動,爲了繼續在後臺運行,程序的輸出必須被重定向到一個文件或另一個輸出流。「 – B4NZ41

+0

也許它工作,請嘗試: $ temp = exec(」mybatch.cmd「,$ file_with_text_to_be_copied); – B4NZ41

0

據我知道你不能訪問這樣的剪貼板。我會建議製作一個簡單的JS腳本,它實際上讀取剪貼板並對後端功能(將剪貼板作爲參數傳入)進行簡單的AJAX調用,然後根據需要執行任何操作。

但是,一些瀏覽器可能會限制通過JS訪問剪貼板。

+0

我同意我不應該不應該這樣做,否則將導致PHP掛起,直到執行程序結束。能夠做到這一點,但我不明白爲什麼我不能。至於用js管理剪貼板的瀏覽器,我無法看到瀏覽器如何知道我正在從函數訪問剪貼板從瀏覽器中調用 – user1167442

相關問題