2010-06-09 121 views
2

我試着用谷歌搜索這個問題,發現很多人有同樣的問題,但沒有解決方案。PHP執行()不執行批處理文件

$result = exec("C:\\Ruby191\\bin\\lessc.bat less\\$file", $output); 

這裏result是一個空字符串和output空數組。同樣的事情:

$result = exec("cmd /c C:\\Ruby191\\bin\\lessc.bat less\\$file", $output); 

我相信路徑是正確的;我確信exec()已啓用。

我試過exec,shell_exec,system並且沒有任何工作。

lessc is less CSS


EDIT

Apache的錯誤日誌說:

' 「ruby.exe」' 不被識別爲一個 內部或外部命令,可操作 程序或批處理文件。

+1

您是否在路徑名中嘗試了正斜槓?你的Apache錯誤日誌說什麼?假設你運行IIS,然後查看相關鏈接: – mario 2010-06-09 10:54:58

+0

@mario:謝謝,我不知道錯誤會記錄在Apache日誌中。它說'''ruby.exe''不被識別爲內部或外部命令, 可操作的程序或批處理文件。'我如何使它使用與普通shell相同的PATH? – 2010-06-09 11:00:22

+0

您可以明確地將所需的目錄添加到批處理腳本開始處的路徑中。您可以通過執行'cmd/c path'來檢查當前路徑設置並檢查輸出。 – Tgr 2010-06-09 11:18:30

回答

6

我發現了這個問題;我爲此僅安裝了ruby,並將其添加到我的PATH環境變量中,並立即開始工作以執行命令提示。

然而,它不適用於PHP,所以我決定重新啓動我的電腦。之後,它的工作。

+0

這有點極端。環境變量在啓動時爲應用程序設置,稍後通過系統屬性進行的任何更改都不會自動傳播到已運行的應用程序)。您只需重新啓動Web服務器進程即可。 – 2010-06-09 17:43:35

+0

我有這個問題試圖讓'javac'識別。立即在命令提示符下工作,但不在PHP中。 – 2012-07-04 01:44:57

+0

您節省了我的時間(幾小時後) – paibamboo 2016-11-11 06:20:59

0

First chdir(「C:\ Ruby191 \ bin \」),然後運行lessc.bat。

+1

我不想;我想留在我的目錄中。 – 2010-06-09 11:06:53