问题

项目中用到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命令,成功执行。

更多推荐

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