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

标签 java php macos exec

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 代码中运行。不将 shell $PATH 变量中的搜索路径导入到服务器端语言(例如 PHP)是一项安全功能。

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

如果您有兴趣使用环境变量方法,我建议您使用受限环境。根据您的特定设置,以下有关 SO(针对 Apache/PHP)的问题可能会给您一个起点: https://stackoverflow.com/questions/13568191/how-to-get-system-environment-variables-into-php-while-running-cli-apache2hand

关于java - 无法在 php osx 中执行 ("java -version"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31459107/

相关文章:

java - 鼠标悬停时 Intellij 13 Auto doc 弹出解决方案不再有效

java - 从结果集中检索结果 mysql java

java - 如何从 javafx 中的切换按钮获取文本

php - 我想查询连接的记录(左连接)并将它们放入 PhP 中的数组结构中,如何?

php - 添加每行不同数据内容的数据 php mysql

java - Eclipse block 着色

PHP脚本发送zip文件并在不工作后删除

python - Scipy 错误 : numpy. dtype 大小已更改,可能表示二进制不兼容(以及相关的奇怪行为)

ruby-on-rails - Gem::Ext::BuildError:错误:无法构建 gem native 扩展 Bcrypt-Ruby

android - 将 Android 源移动到区分大小写的图像中