2015-01-31 76 views
2

執行.exe文件我有以下問題:通過PHP

我,我要進行遠程訪問,然後執行的程序在Windows 7的x64機器上運行的XAMPP Apache服務器。 現在我在htdocs目錄下有兩個文件,index.php和test.php。

的index.php:

<a href="test.php">Click here</a> 

test.php的:

<?php 
exec("C:\\xampp\\htdocs\\notepad.exe"); 
?> 

的index.php文件打開了的test.php但多數民衆贊成在那裏我會被卡住。 瀏覽器現在不響應,只顯示「等待本地主機」,直到它超時。

我花了幾個小時找出問題,但沒有任何幫助。

+1

網絡服務器未作爲登錄到控制檯的同一用戶運行。它不能運行像NotePad這樣的交互式圖形程序。 – Barmar 2015-01-31 21:36:51

+0

是的!我終於明白了,謝謝!我在任務管理器中勾選了「爲所有用戶顯示進程」框後,運行了20個notepad.exe。是! 我只是一個白癡。 – 2015-01-31 21:46:12

回答

3

正如PHP EXEC頁面提到的意見,你應該運行它作爲後臺進程,否則它會等待結果。

我知道你問過windows,但是如果你使用別的東西,這將使它更容易移植。雖然這似乎很難exe文件,但也可能用於其他用途。我猜「notepad.exe」只是一個例子,而不是你真正想要運行的東西。

<?php 
function execInBackground($cmd) { 
    if (substr(php_uname(), 0, 7) == "Windows"){ 
     pclose(popen("start /B ". $cmd, "r")); 
    } 
    else { 
     exec($cmd . " > /dev/null &"); 
    } 
} 
?> 
0

由於PHP EXEC頁面上的註釋提到,您應該將其作爲後臺進程運行,否則將等待結果。

我知道你問過windows,但是如果你使用別的東西,這將使它更容易移植。雖然這似乎很難與exe文件,但也可能用於其他用途。我猜「notepad.exe」只是一個例子,而不是你真正想要運行的東西。