我有一个php文件
<?php
$op=exec("/usr/bin/sh /home/muralik/www/html/testing/testin.sh >> /home/muralik/www/html/testing/abc.log 2>&1 &",$rs);
echo "OP = ".$op;
echo "<br>RS = <pre>";
print_r($rs);
echo "</pre>"
?>
testin.sh
while(true)
do
echo "standard output"
echo "abc"
sleep 2
done
当我在localhost或web服务器中打开php文件时。 shell脚本没有运行。
我该怎么办?谢谢你。
答案 0 :(得分:1)
我相信你的脚本正在运行,你只是没有看到输出?
您在exec中运行的命令会将STDOUT和STDERR重定向到abc.log:
/usr/bin/sh /home/muralik/www/html/testing/testin.sh >> /home/muralik/www/html/testing/abc.log 2>&1
因为所有内容都被重定向,所以$ rs中不会有任何结果,$ op将为空,并且执行的命令不会有最后一行。
此外,你的shell脚本将在无限循环中运行,这意味着它永远不会返回任何内容,这意味着exec()永远不会返回,因为它等待执行完成。
答案 1 :(得分:0)
通常(出于安全原因)从浏览器运行的脚本不会运行shell命令。
为了使其正常工作,您需要更改.htaccess文件(这将告诉您的服务器将您的脚本视为应用程序)
在.htaccess中添加以下行:
Options ExecCGI
AddHandler cgi-script .php
这将允许CGI文件夹中的任何php文件作为应用程序运行