admin管理员组

文章数量:1794759

PHP脚本Apache用户下执行Java命令报exec: java: not found

PHP脚本Apache用户下执行Java命令报exec: java: not found

问题

项目中用到PHP脚本执行Java命令。

<?php exec('java -version');

在本地Terminal执行的好好的,传到服务器上用网页访问无反应。

查看Apache的error_log:

#vi /var/log/httpd/error_log

发现exec: java: not found。

解决

查看Java的环境变量是否已经配上去,在命令行输入:

#echo $PATH

输出:

#/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/src/jdk1.8.0_91/bin

可以确定系统的Java环境变量没有问题。

查看在Apache用户下Java环境变量有没有配置。在index.php写上:

<?php $path = exec('echo $PATH'); echo($path);

访问index.php,输出:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin

并没有看到Java的环境变量。 所以得出结论就是在Apache下找不到Java路径。

查找google,发现一篇文章,关于Apache下环境变量的配置。 按照文章中的提示:

#vi /etc/sysconfig/httpd

在末尾添加:

#java PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/src/jdk1.8.0_91/bin CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

:wq保存 重启Apache

#systemctl restart httpd.service

再次访问index.php

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/src/jdk1.8.0_91/bin

现在Java的环境变量已经加进去了。

再次尝试Apache下,PHP调用Java命令,成功执行。

本文标签: 脚本命令用户ApachePHP