无法在php osx中执行(“java-version”)

无法在php osx中执行(“java-version”),java,php,macos,exec,Java,Php,Macos,Exec,osx yosomite中的PHP无法成功执行以下代码 <?php exec("java -version 2>&1", $output, $returnValue); print_r($returnValue); print_r($output); ?> 我可以从命令行成功运行它。我尝试更改apache用户,但没有任何帮助。在PHP中,您无法访问Java等可执行文件的正常搜索路径;这就是为什么可以在终端中运行它,

osx yosomite中的PHP无法成功执行以下代码

<?php   
        exec("java -version 2>&1", $output, $returnValue);
        print_r($returnValue);
        print_r($output);
?>

我可以从命令行成功运行它。我尝试更改apache用户,但没有任何帮助。

在PHP中,您无法访问Java等可执行文件的正常搜索路径;这就是为什么可以在终端中运行它,但不能在PHP代码中运行。不将shell$PATH变量中的搜索路径导入服务器端语言(如PHP)是一项安全功能

虽然可以将PATH变量导出到exec子shell中,但可能不应该。首选java可执行文件的完整路径。请记住,PHP可用的环境变量(如PATH)将是PHP运行时用户的环境变量——出于安全原因,通常是受限用户

如果您对使用环境变量方法感兴趣,我建议使用受限环境。根据您的特定设置,以下关于SO的问题(对于Apache/PHP)可能会为您提供一个起点:

系统上存在Java。提供Java可执行文件的绝对路径可能会有所帮助。这很有帮助,但如果没有完整路径,就不能完成吗?谢谢!虽然我使用的是EVNVEnvironment变量方法,但问题是我在多个位置安装了java,并且指向了错误的java。一旦我指向正确的java,它就开始工作了。
1Array ( [0] => No Java runtime present, requesting install. [1] => 2015-07-16 21:25:05.588 java[1434:49304] JLRequestRuntimeInstall: Error calling: CFMessagePortCreateRemote )