我有以下 PHP代码,它尝试使用shell_exec命令运行JAVA:
ionic cordova build browser --prod
PHP程序的输出是:
<?php
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
ini_set("display_errors", 1);
function isEnabled($func) {
return is_callable($func) && false === stripos(ini_get('disable_functions'), $func);
}
if (isEnabled('shell_exec')) {
$output = shell_exec('ls -lart');
echo "<pre>$output</pre>";
echo shell_exec('echo "hello world"');
echo shell_exec('java -version 2>&1"');
} else {
echo "DISABLED";
}
?>
很明显,尽管打印了其他命令,但java -version命令缺少输出。
问题:为什么在调用“ java -version”命令时没有Java输出或至少没有错误报告?
从命令行(不是PHP)执行时,输出为:
java版本“ 1.8.0_66” Java™SE运行时环境(内部版本 1.8.0_66-b17)Java HotSpot(TM)64位服务器VM(内部版本25.66-b17,混合模式)
如何说服PHP执行我的JAVA应用程序?
我的Web服务器以“ www-data”用户身份运行:
total 100
drwxr-xr-x 22 root root 4096 Aug 16 13:11 ..
-rw-r--r-- 1 root root 307 Aug 16 13:15 cancel.php
-rw-r--r-- 1 root root 1587 Aug 16 14:26 index.php
hello world
将命令作为www-data运行也很完美:
echo posix_getpwuid(posix_geteuid())['name'];