我目前正在编写一些需要调用jar的PHP脚本。我编写了一个测试脚本来测试Java -version cmd。
echo exec('whoami');
echo '<hr/>';
exec('java -version', $out);
var_dump($out);
页面返回如下:
apache
array(6) { [0]=> string(134) "OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00007ff705000000, 2555904, 1) failed; error='Permission denied' (errno=13)" [1]=> string(1) "#" [2]=> string(76) "# There is insufficient memory for the Java Runtime Environment to continue." [3]=> string(100) "# Native memory allocation (malloc) failed to allocate 2555904 bytes for committing reserved memory." [4]=> string(57) "# An error report file with more information is saved as:" [5]=> string(29) "# /tmp/jvm-26720/hs_error.log" }
我在控制台中测试了cmd,这是正常的。
[root@localhost ~]# java -version
java version "1.7.0_45"
OpenJDK Runtime Environment (rhel-2.4.3.3.el6-x86_64 u45-b15)
OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode)
有没有人可以帮我解决这个问题?
答案 0 :(得分:2)
我有一个类似的问题。我在RedHat 7(安装在Amazon EC2上)上复制了它。
仅当selinux切换到许可模式时,此问题才得到解决。
root
身份登录$ sestatus
或$ getenforce
。 $ setenforce 0
。/etc/selinux/config
文件经过更深入的研究,似乎最好启用“ apache使用内存”而不关闭该模式:
setsebool -P httpd_execmem 1
更多信息here。