ゾーン ファイル /var/named/rpz.local
を編集しているため、次のコマンドを実行した後に rndc をリロードする必要があります:
root として cli を使用することはすべて問題ありませんが、問題は、nginx (PHP) を介して /usr/sbin/rndc
を実行できないことです。それで、ヒントを教えてもらえますか?
これを実行できます:
リーリーしかし、このコマンドを実行すると、出力は空になります。
system('rndc リロード');
または
shell_exec('rndc関連');
次のコマンドを実行することさえできないため、rndc
にアクセスできないようです。
rndc ステータス
しかし、これを実行すると:
#uptime と
uptime コマンドの結果はありますが、
shell_exec('rndc reload') については何もありません。以下のコマンドも実行しました。しかし、うまくいきませんでした:
ああああ
P粉5459565972024-02-22 00:36:26
PHP を Nginx で root として実行している場合、深刻な問題が 1 つ発生し、さらにいくつかの問題が発生します。
root ユーザーの役割とその目的を理解するには、操作マニュアルを参照してください。その後、それに応じてシステムを管理します。つまり、root として何かを実行できるからといって、それを PHP 内から実行する必要があるわけではありません。
その理由を学びましょう。本物。正直に。
そうでない場合は、オペレーティング システムに精通している担当システム管理者に問い合わせて、要件を直接明確にしてください。P粉4632912482024-02-22 00:06:56
###問題が解決しました。どうやって?
rndc コマンドを実行しようとすると、
NULL が発生します。
この記事で述べたように、コマンドを次のように変更しました。
$Test =shell_exec(`rndc reload rpz.local 2>&1`); // rndc.key ファイルに対するリターン権限が拒否されました
print($Test);
だから私はやりました:
setfacl -m u:nginx:rwx /etc/rndc.key
###問題は解決された。ありがとうございます
@hake
@hake が述べたように、nginx を sudoer として実行したり、nginx を sudoer グループに追加したりするのは間違っているため、間違いを犯さないでください ただし、デバッグは問題ありません。そしてテスト(1~2時間以内)。