2014-01-22 44 views
0

我想通過PHP運行一個八度腳本。我已經搜索了一下,發現了一些結果,但沒有一個能爲我工作。我嘗試使用exec()和system()。我甚至創建了一個批處理文件,它調用'octave myScript.m',並使用PHP的system()調用這個bat文件,但它似乎無效。在瀏覽器頁面中,我只看到'C:/ FOLDER_PATH> octave myScript.m 」。八度腳本只是創建一個新文件並向其中寫入一些文本。當我直接運行bat文件(通過雙擊它),文件得到正確創建。我也添加到octaverc文件的文件夾路徑,但它似乎沒有工作。我需要做一些八度圖像處理,我已經寫了腳本。我需要在客戶端請求上調用此腳本並將結果發送回客戶端。我正在通過一個示例腳本來檢查調用過程,正如我之前提到的那樣創建了一個新文件。我究竟做錯了什麼?通過php窗口的八度腳本

我的PHP代碼是這樣的:

$cmd = "cmd /c C:\PATH_TO_BAT_FILE\myBat.bat"; 
exec($cmd,$output); 
system($cmd); 
echo implode ("\n",$output); 

請注意,我的路徑包含雙反斜線避免轉義字符序列

我的bat文件是這樣的

octave temp.m 

我倍頻代碼(TEMP .m)是這樣的

fid = fopen("helloScript.txt",'w'); 
fprintf(fid,"Hello world!"); 
fclose(fid); 

輸出繼電器上的網頁是這樣的:

C:\PATH_TO_BAT_FILE>octave temp.m C:\PATH_TO_BAT_FILE>octave temp.m 

我可以,每當我在運行瀏覽器的PHP腳本(我猜測,這是CMD)是越來越創建一個新的進程的任務管理器中看到。 此外,當我改變我的bat文件到

echo hello 

我能看到我的瀏覽器頁面

C:\PATH_TO_BAT_FILE>echo hello hello C:\PATH_TO_BAT_FILE>echo hello hello 

下列因此,這可能意味着該bat文件是越來越正確執行。但是當我用'octave MY_FILE.m'替換bat文件腳本時,我無法看到輸出。這可能意味着我的八度沒有正確配置?或者有什麼我失蹤?

任何幫助,將不勝感激。

感謝

+0

如果你可以看到源代碼中的PHP源代碼,那麼你沒有啓用PHP。 –

+0

你能解釋一下嗎?我沒有明白 – BaluRaman

+0

它是從我的推論:在瀏覽器頁面,我只看到'C:/ FOLDER_PATH>八度myScript.m「 –

回答

0

這是尷尬,但我解決了它的全路徑。在bat文件中,我指定了octave.exe(C:\ Software \ PATH_TO_OCTAVE.EXE)的完整路徑和'.m'文件的完整路徑。 在我的php中,我只使用exec()

+0

請給出bat文件的代碼 – next2u

0

如果你要運行該批處理文件在PHP創建它那麼php命令應該是這樣的。

exec('cmd.exe /c C:\path\to\test.bat'); 
+0

我已經試過了,它不工作,我的php代碼是這樣的: – BaluRaman

+0

它不是'cmd.exe/c C:\\ path \\ to \\ test.bat'嗎?否則你的標籤爲\ t –

+0

@LozCherone是的,我相信你是對的,除非你使用雙引號,否則它不應該被轉義。改變了它。 –