无法从 PHP 调用 Java 二进制文件

无法从 PHP 调用 Java 二进制文件

你好,我想使用 PHP exec() 函数调用 java,但是失败了(没有输出例如exec('/usr/bin/java -version')

我在 debian wheezy 上以 Fast-CGI (带有 fcgid) 形式运行 apache 和 PHP。

java 二进制文件在 /usr/bin/java 下可用,可以从命令行调用,例如“/usr/bin/java -version”返回预期信息。

在 apache/suexec 用户上下文中调用此功能也可以从命令行(sudo -u www-data /usr/bin/java -version)运行。

但是从 PHP 调用exec()或检查is_executable('/usr/bin/java')不起作用。

我错过了什么?

答案1

我将在这里回答我自己的问题。事实证明,有两个不同的问题。

1) 首先是微不足道的,我忘记了open_basedir未包含/usr/bin目录的活动设置。但无论如何,即使包含它之后,/usr/bin/java根据 PHP 仍然无法执行is_executable()。所以我不得不禁用此功能,但对于我本地 DEV 服务器来说,这并不重要。也许有人知道如何使用open_basedirset 使其可执行。

2)第二个问题很奇怪但却是事实:-)由于某些奇怪的原因,“java -version”的调用没有写入STDOUT而是写入STDERR,因此PHPsexec()无法提供输出。

相关内容