2014-01-28 49 views
1

我想在eclipse環境中從PHP執行Octave腳本。 PHP的設置,Apache的工作。發生涉及到下面的調用問題:使用系統,exec或passthru從PHP調用Octave

$cmd = "octave3.8 -qf /.../path_to_file/myscript.m file.txt"; 
$ex = passthru($cmd, $output); 
var_dump($ex); 
var_dump($output); 

在腳本中myscript.m有:

e = 5    % too see if it will be printed onto the web page 
arg = argv();   
data = load(arg{1}); 

結果是: NULL INT(1)

幾個主題演講:

  • 來自終端的相同命令工作正常(octave3.8 -qf /../path_to_file/myscript.m file.txt的)
  • 我已經試圖把PHP進程由一個sudoer運行

在Ubuntu 12.04,倍頻3.8 .0,Eclipse標準/ SDK 2.0.1。 ,PHP開發工具3.2.0。

+0

你是否設法完成這項工作? –

+0

你有沒有得到任何解決方案,然後請分享.. – next2u

回答

0

您的命令行應該是:

octave --no-gui --quiet /path/to/script.m 

和腳本的內容應該是:

e = 5; 
disp(e); 
+0

它也不起作用。命令-q是安靜的,沒有GUI是默認的倍頻程3.8.0 – eykiriku

+0

@eykiriku,我不這麼認爲。至少在Linux版本上,GUI是默認的。你需要'-q'來使Octave歡迎信息無聲。另外,請注意'argv()',它包含* all *在命令行中傳遞的標誌和額外參數。 – juliohm

0

真的要做到這一點?新的八度版本不支持管道。當用戶輸入類似文件或系統相關八度功能的命令時,您可能會遇到許多安全問題。當您使用管道中的八度時,新的圖形工具包fltk將掛起。你仍然有興趣在谷歌搜索在線八度。嗯。有Nclab,它是一個基於雲的。

+0

你是什麼意思的管道?這個PHP腳本不需要用戶的任何輸入。我的PHP腳本的流程是:PHP訪問一個數據庫,檢索文件「file.txt」,將它傳遞給八度,它將完成所有處理,並將結果返回到PHP腳本,以保存到另一個文件或打印到網頁。使用Nclab而不是在網絡服務器上獨立安裝八度音程有什麼好處? – eykiriku