0

我有一个 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 脚本没有运行。

我应该怎么办。提前感谢。

4

2 回答 2

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() 在等待执行完成时永远不会返回。

于 2012-08-16T17:22:52.087 回答
0

通常(出于安全原因)从浏览器运行的脚本不会运行 shell 命令。

为了使它工作,您需要更改您的 .htaccess 文件(这将告诉您的服务器将您的脚本视为应用程序)

在 .htaccess 中添加以下行:

Options ExecCGI 
AddHandler cgi-script .php

这将允许 CGI 文件夹中的任何 php 文件作为应用程序运行

于 2012-08-16T17:25:37.757 回答