当前位置: 代码迷 >> java >> 无法在php osx中执行(“ java -version”)
  详细解决方案

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

热度:15   发布时间:2023-07-27 09:25:23.0

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

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

我得到的输出是

1Array ( [0] => No Java runtime present, requesting install. [1] => 2015-07-16 21:25:05.588 java[1434:49304] JLRequestRuntimeInstall: Error calling: CFMessagePortCreateRemote )

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

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

尽管您可以将PATH变量导出到exec子外壳中,但您可能不应该这样做。 Java可执行文件的完整路径是首选。 请记住,PHP可用的环境变量(例如PATH)将是运行PHP的用户的那些环境变量-出于安全原因通常是受限用户。

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

  相关解决方案