【问题标题】:Can't run java from PHP's exec无法从 PHP 的 exec 运行 java
【发布时间】:2016-04-21 08:50:39
【问题描述】:

我一直在尝试运行一个 JAR 文件,该文件将在控制台中以这种方式从 input.txt 读取并写入 output.txt

java -jar file.jar input.txt output.txt

而且它在我的机器上可以 100% 正常工作。我需要在 php 脚本中运行它,这段代码对我来说 100% 可以正常工作(Mac OS,php 内置服务器):

exec("java -jar file.jar input.txt output.txt");

但是一旦我将它(CentOS 服务器)部署到允许 exec 函数的地方,它就会失败,它返回一个空字符串并且 jar 不起作用,直接从 shell 运行它就可以了。

我该如何解决这个问题? 提前致谢!

【问题讨论】:

  • 运行 php 脚本的用户是否有权读取/写入此内容所在的目录?仅仅因为它在命令提示符下对您有用并没有多大意义。那是一个不同的用户,在一个完全不同的环境中。
  • 首先,考虑到安全隐患,我不是 exec 的粉丝。话虽如此,请尝试使用 java 可执行文件的完整路径和该命令中的文件,看看是否可行。
  • @MarcB 是的,Apache 用户与我从控制台(在该服务器上)执行该用户的用户相同,并且工作正常
  • java怎么样?是在shell php 使用的路径中吗?就像我说的 - 环境大不相同。
  • @PatrickLee 我不知道;不认为没有 exec 我有很多选择,我会尝试完整路径!

标签: java php linux shell jar


【解决方案1】:

exec() 的问题在于 PHP 不知道 Java 在服务器上的位置。更新您的命令以指定 Java 可执行文件的完整路径,它应该可以工作,但您还应该使用 jar 和文本文件的完整路径。

【讨论】:

    猜你喜欢
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    • 2020-05-07
    • 2017-01-03
    • 1970-01-01
    • 1970-01-01
    • 2012-02-21
    • 1970-01-01
    相关资源
    最近更新 更多