我在Debian 8.2上运行lighttpd 1.4.35。我有一个非常简单的html文件与php代码(php5)调用bash脚本并打印输出:
<html>
<body>
<?php
$res = shell_exec("/var/www/html/run.sh");
echo $res . " is the result";
?>
</body>
</html>
如果在Firefox上调用该html文件,则输出为
is the result
如果我直接用该文件(php index.php
)运行php,则输出为
<html>
<body>
13.00
is the result</body>
</html>
那么,结果会在哪里丢失?
编辑: 来自firefox的网页源代码是
<html>
<body>
is the result</body>
</html>
编辑:已解决。 bash脚本使用'〜',当从webserver运行脚本时,它会扩展到错误的目录。
答案 0 :(得分:1)
exec函数“only”返回stdout的内容,这就是你可能会错过错误信息的原因 但你可以redirect stderr来标准,例如通过
$res = shell_exec("/var/www/html/run.sh 2>&1");
答案 1 :(得分:0)
shell_exec
无法运行,这可能是问题