【发布时间】: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 我有很多选择,我会尝试完整路径!