を含むPHPスクリプトがありshell_execute()、それが実行するコマンドには通常sudoが必要です。visudoを使用してsudoersを編集し、次のものを含めました。
www-data ALL = NOPASSWD: /var/root/node/npm/node_modules/less/
%users ALL = NOPASSWD: /var/root/node/npm/node_modules/less/
どちらもうまくいくと思いますが、確かにベルトとサスペンダーのアプローチを採用しました。
私はvimでetc/sudoersを編集しているので、これらの行を追加した後、:xを実行すると、すべてが機能します。私のPHPスクリプトは、想定どおりの動作をします...約10〜15分間。その後、スクリプトは機能しなくなります。具体的には、shell_exec()動作を停止します。
もう一度やるsudo visudoと、新しい行はまだそこにあります。ただし、再度保存した場合にのみ、スクリプトが再び機能し始めます。
なぜこれが起こっているのか誰か教えてもらえますか?私にはあまり良くない2つの推測があります:
- 私のときに始まるある種の猶予期間が
sudo visudoあり、これが私のスクリプトを機能させるものです(ただし、期限が切れるまでのみ)。 - etc / sudoersの新しいデータはsudoers.tmp(「ロックファイル」)に残っています...これらのどちらも私には加算されません。