通过PHP的交互式shell命令

时间:2015-04-23 11:27:00

标签: php apache shell

我在/ var / www文件夹中有以下index.php文件。

<html>
<?php
$output = shell_exec("/home/ak/Documents/Translation/mosesdecoder/bin/moses -f /home/ak/Documents/Translation/ourOwnHinNorm/working/binarisedModel/moses.ini -input-file /home/ak/Documents/Translation/input.txt > /home/ak/Documents/Translation/output.txt");
//$output = shell_exec("cat /home/ak/Documents/Translation/instructions.txt");
echo $output;
?>
</html>

代码试图运行moses程序来读取input.txt的输入并将输出写入output.txt。我在我的Ubuntu终端上运行了上面写的moses命令,它运行正常。

但是,当我通过浏览器运行index.php时,即使经过很长时间,output.txt仍然是空的。

注意:我已经运行chmod -R 775 /home/ak/Documents/Translation/,因此我可以访问并执行该目录中的文件。作为测试,我取消注释了注释行(shell_exec中的第二个index.php),该行旨在打印放置在同一文件夹中的instructions.txt的内容。然后,通过浏览器运行index.php,在浏览器上打印instructions.txt的内容。

任何想法,为什么第一个shell_exec在浏览器中运行时会失败?

1 个答案:

答案 0 :(得分:0)

/home/ak/.bashrc

中添加此行
export PATH=$PATH:/home/ak/Documents/Translation/mosesdecoder/bin

打开一个新终端并输入moses以测试它是否有效。

现在,替换

  

$ output = shell_exec(“/ home / ak / Documents / Translation / mosesdecoder / bin / moses -f /home/ak/Documents/Translation/ourOwnHinNorm/working/binarisedModel/moses.ini -input-file / home / ak / Documents / Translation / input.txt&gt; /home/ak/Documents/Translation/output.txt“);

使用:

$output = shell_exec("moses -f /home/ak/Documents/Translation/ourOwnHinNorm/working/binarisedModel/moses.ini -input-file /home/ak/Documents/Translation/input.txt > /home/ak/Documents/Translation/output.txt");