无法在PHP中使用shell_exec()传递STDIN

时间:2015-11-06 12:13:44

标签: java php linux bash ubuntu

我是PHP的初学者。

我想使用PHP执行java .jar文件.jar文件从STDIN获取输入并在STDOUT生成输出。要执行jar文件,这就是我在Ubuntu中所做的Linux终端:

./java/bin/java -jar abc.jar
<here goes the STDIN>
Ctrl+D
<The output gets generated here at the STDOUT>

这很完美。但是当我在PHP中复制它时:

$p=shell_exec("./java/bin/java -jar abc.jar $s 0<&-");

$p为空时,这会发送STDIN生成的输出。这肯定意味着$s没有被传递。我完全确定我的jar文件工作正常,这是PHP脚本我的错误在哪里。任何人都可以指出我的错误?提前谢谢。

1 个答案:

答案 0 :(得分:0)

在黑暗中完成拍摄,但是:

$p=shell_exec(sprintf('./java/bin/java -jar abc.jar "%s" 0<&-', addslashes($s)));

可能是$s包含破坏命令语法的未转义字符的情况。