2013-07-18 40 views
1

如何從php文件運行保存爲.m文件的MATLAB代碼?我對PHP很陌生,一直在學習。我從網站獲取信息,然後需要運行一些數字。我需要MATLAB,因爲計算是相當複雜的,但設法連接到相同的數據庫,並直接從MATLAB拉相關值,所以我想要做的就是打開MATLAB並運行.m文件,它已經在代碼中包含所有內容。如何通過PHP啓動Matlab

我有版本MATLAB 2012b和我正在使用MAMP運行我的本地主機上的網站。

到目前爲止,我已經試過這樣:

<?php system('/Applications/MATLAB_R2012b.app/bin/matlab -nodisplay -nosplash -r "code.m"'); ?>

什麼也沒有發生這很奇怪,因爲在終端,如果我輸入上面的代碼裏面的'代碼運行完美。

我想另一件事是運行以下命令:

<?php system('cd /Applications/MATLAB_R2012b.app/bin; ls; open matlab');?>

輸出是正確的,因爲我得到:

activate_matlab.sh, m3iregistry, mexopts.sh, deactivate_matlab.sh, maci64, mw_mpiexec, deploytool, matlab, mw_smpd, engopts.sh, matopts.sh optsetup.sh, insttype.ini, mbuild, registry, lcdata.xml, mbuildopts.sh, util, lcdata.xsd mcc, worker, lcdata_utf8.xml, mex, ldd, mexext

這意味着我能夠直接訪問的 「bin」 MATLAB Unix可執行文件所在的位置,但我無法運行實際的Unix可執行文件。

有什麼建議嗎?

+0

MatLab腳本是做什麼的?不要使用執行和轉儲輸出的'system()',而是嘗試捕獲將命令放入[PHP反向代碼](http://php.net/manual/en/language.operators.execution.php)並將輸出到一個變量並轉儲它。像這樣:'<?php $ output = \'/Applications/MATLAB_R2012b.app/bin/matlab -nodisplay -nosplash -r「code.m」\';的var_dump($輸出); ?> –

+0

@LukeCordingley我得到以下結果:'string(0)「'' – ezpaider

+0

權限問題可能是?你的PHP用戶在/ Applications中有執行權限嗎? – horchler

回答

0

我終於搞清楚了。我最終做的是用MALTAB編譯器工具箱編譯一個獨立的應用程序,並讓服務器通過在其上安裝MATLAB Complier Runtime(MCR)來解釋代碼。但請注意,服務器上的操作系統必須相同。所以如果你在Mac中編譯並在Ubuntu中使用MCR,它將無法工作。您需要這樣做是一致的,因爲在MCR解釋的腳本中會生成許多特定於操作系統的引用。多謝你們。

+0

你能接受這個答案,這樣問題不會留在那裏嗎? –