2011-04-24 49 views
2

我擡頭所有與此相關的其他問題,但他們並沒有幫助,所以:Apache服務PHP的exec不工作

我運行Windows Server 2003的計算機上的XAMPP(精簡版)域裏面,阿帕奇作爲服務安裝。問題是:PHP函數exec,system,passthru等等什麼都不做,沒有錯誤信息(apache的日誌級別是debug,php error_reporting是E_ALL),沒有程序執行,沒有任何操作,就好像函數調用不是' t there

我試過不同的方法:exec,system,..; proc_openWScript.Shell COM對象,沒有任何工作。我嘗試使用絕對路徑,授予用戶權限,嘗試噸不同的.exe做不同的東西,沒有任何工作,沒有每一個被執行。

我給了Apache服務我的用戶名爲;給它的自己的apache用戶;給它的系統用戶,並勾選「允許與桌面互動」「。

php safe_mode關閉,也沒有功能被禁用。

當運行apache NOT作爲服務時,一切正常。

任何想法可能是錯誤的?

TIA

回答

1

檢查您的php.ini文件只是櫃面你所提到的是在不允許設置這些功能。雖然不是XAMPP發佈的標準,但值得檢查。

你說你沒有收到任何錯誤,我會假設你的服務器設置爲服務,因此任何使用exe,system,passthru等發送的命令都將在後臺完成,所以你不會看到它們在運行,但你應該能夠捕獲數據。

<?php 

//Start an object to capture data. 
ob_start(); 

//Check we have access to the command line. 
exec("ping google.com -n 1"); 

//Capture the output. 
$output = ob_get_clean(); 

//Let's display it. 
echo $output; 

?> 

嘗試上面的看看會發生什麼,您應該從命令行得到響應,否則可能是因爲權限。

+0

正如寫道:功能沒有禁用和權限是好的。 試過你的例子,它沒有工作。我也試過不同的命令會導致文件創建或其他的東西,所以我看到了PHP腳本之外的結果(「echo'foo'> bar.txt」或者用imagemagick轉換jpeg)=>沒有結果 – waquner 2011-04-24 13:44:58

+0

好吧,if你用一些文本做了正常的回聲,你會得到輸出嗎?假設是,你在運行什麼操作系統? – 2011-04-24 16:21:06

5

如果您嘗試從Vista中的服務啓動GUI應用程序,則會遇到很多麻煩。作爲一項安全功能,Vista使用「交互式服務檢測」調解服務與桌面的交互。

這意味着,如果您將PHP作爲Apache服務的模塊運行,您將無法使用任何方法啓動GUI應用程序。這種東西是行不通的:

$ WshShell = new COM(「WScript.Shell」); $ oExec = $ WshShell-> Run(「notepad.exe」,7,false);

因此,如果您想使用Apache/PHP作爲啓動GUI應用程序的代理,您需要運行Apache作爲控制檯應用程序。

首先,如果Apache已經作爲服務安裝,則需要使用服務管理單元將其啓動類型設置爲「手動」。 (%SystemRoot%\ system32 \ services.msc)在開始菜單搜索框中搜索服務。

然後添加一個快捷方式到C:\ apache \ bin \ httpd。exe(或安裝Apache的任何地方)到您的啓動文件夾,並將該快捷方式設置爲開始最小化。你可以使用像TrayIt這樣的應用程序!強制Apache進入系統托盤。

然後使用PHP網站上列出的任何方法,您將能夠從PHP打開Windows應用程序並查看它的GUI。