2013-12-23 60 views
2

我有一個web界面來控制與OpenMPI的集羣,我使用shell_exec()函數來執行mpirun,當我嘗試用「-host local」執行它時完美的作品,但是當我用命令「-hostfile/home/hostfile」運行時,它什麼都不做。PHP不能從shell-exec()函數運行MPI

如果我把這個命令放在控制檯中,它可以很好地工作,但是shell_exec()中的相同命令不起作用。

命令無法從工作了shell_exec:

CD/MPI;的mpirun -np 64 -hostfile /家庭/ hostfile17 paralelo 1 image.bmp out.bmp

但該命令從控制檯完美的作品。

關於發生了什麼的任何想法?

+0

您確保HOSTFILE是'/ home'? Unix系統非常不習慣將文件存儲在'/ home'而不是'/ home/username /'中。 –

+0

是的,它在「/ home/hostfile17」中。 –

+0

檢查'/ home/hostfile17'的訪問權限並確保它可以被Web服務器讀取。還要確保Web服務器的用戶可以通過SSH登錄到hostfile中列出的節點,而不需要密碼,例如與一個無密碼的鑰匙。 –

回答

0

PHP的shell_exec函數將在非登錄用戶下執行您的命令。這只是意味着您將不會提供$ PATH &其他環境變量。 只需明確您的mpirun所在的位置,並使用絕對路徑確保MPI知道您在說什麼。

例子:

/usr/local/bin/mpirun -np 64 -hostfile /home/hostfile17 /full/path/paralelo 1 /mpi/image.bmp /mpi/out.bmp