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

标签 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<&-");

这会发送 $pSTDIN 为空时生成的输出。这绝对意味着 $s 没有被传递。我很完美确保我的 jar 文件工作正常,这是我的错误所在的 php 脚本。任何人都可以指出我的错误吗?提前致谢。

最佳答案

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

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

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

关于java - 无法在 PHP 中使用 shell_exec() 传递 STDIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33566581/

相关文章:

php - MasterFormat 分类正则表达式

mysql - 不同的 MySQL 版本有什么关系?

java - 使用 LEFT JOIN 和 GROUP BY 的 JPQL 查询

java - 如何在java中建立线程套接字连接?

php - Mysql查询抛出1054未知列错误?

javascript - 将mysql数据库的php查询搜索限制为非空行

php - cronjob 不与 codeigniter 一起运行

java - 测量方法调用的 I/O 需求

java - 为什么 setAlpha() 作用于我的所有按钮,而 setImageResource() 只作用于一个按钮?

Java - 分割字符串