从PHP调用二进制文件是不可能的

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

我使用PHP作为Fast-CGI(使用fcgid)在debian wheezy上运行apache。

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

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

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

我错过了什么?

我会在这里回答我自己的问题。 原来,有两个不同的问题。

1)首先是微不足道的,我忘记了没有包含/usr/bin目录的活动open_basedir设置。 但是无论如何,即使在包含它之后,根据PHP的is_executable()/usr/bin/java stil也不可执行。 所以我不得不禁用这个function,这对我本地的DEV服务器来说并不重要。 也许有人有一个想法如何使它与open_basedir设置可执行。

2)第二个问题很奇怪,但是真的:-)由于某种奇怪的原因,“java -version”的调用不会写入STDOUT,而是写入STDERR,所以PHP exec()不能提供输出。