问题
项目中用到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
发布评论