0

ルートでなくても実行できるbashスクリプトがあります。

しかし、私が次のようにshell_exec()(またはsystem()、、またはexec())を介して実行すると、次のようになります。

return system("/home/tom/rrd/rrdtool-drawgraph.sh $interval $multiples - debug 2>&1;");

次のメッセージが表示されます。

sh:/home/tom/rrd/rrdtool-drawgraph.sh:許可が拒否されました

(不思議なことに、メッセージが繰り返されます。それが適切かどうかわかりませんか?編集:代わりにバッククォートを使用すると、メッセージが繰り返されないようですshell_exec。図を参照してください。)

777ファイルのアクセス許可を使用してみました。所有者とグループをに変更してみましたwww-data。出力を吐き出すディレクトリを、同じように許容できる権限を持つように変更しました。

それでも実行されません。

私が考えることができる唯一のことは、スクリプトが私のホームディレクトリにあるということです。これが問題である場合、私は驚かれることでしょう(私のWebルートも私のホームディレクトリにあるので)、しかし私は修正される準備ができています。これが問題である場合、ルート特権を必要とせずに修正できますか?

ホームディレクトリにいることとは関係がない場合、何が問題になりますか?そして、どうすれば修正できますか?

4

1 に答える 1

0

スクリプトの場所原因であることがわかりました。

すべてをに移動しましたが/usr/share/rrdscripts、正常に動作します。

奇妙なことに、出力ファイルにアクセス許可の問題はありません。スクリプトは引き続きホームディレクトリの出力フォルダーに書き込むことができます。

于 2010-09-18T12:03:22.767 に答える