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ファイルを開くと。シェルスクリプトが実行されていません。

私は何をすべきか。事前に感謝します。

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 は空になり、実行されたコマンドの最後の行もなくなります。

また、シェル スクリプトは無限ループで実行されます。つまり、何も返されません。つまり、実行が終了するのを待っているため、exec() が返されてはなりません。

于 2012-08-16T17:22:52.087 に答える
0

通常 (セキュリティ上の理由から)、ブラウザから実行されるスクリプトはシェル コマンドを実行しません。

動作させるには、.htaccess ファイルを変更する必要があります (これにより、サーバーはスクリプトをアプリケーションとして扱うようになります)。

.htaccess に次の行を追加します。

Options ExecCGI 
AddHandler cgi-script .php

これにより、CGI フォルダー内の任意の php ファイルをアプリケーションとして実行できるようになります。

于 2012-08-16T17:25:37.757 に答える