Webアプリケーション(php)からperlデーモンを制御(start \ stop \ restart)する必要があります。コマンドラインからinitスクリプト(/etc/init.d/foodaemon start(正常に動作))を使用すると、デーモンが正しく起動(および実行)されますが、動作しません(デーモンはダウンしていますが、pidファイルが作成されます。アプリケーションから起動しようとすると、デーモンが作成後に終了しました)。/ etc/sudoersに追加しました
apache ALL = NOPASSWD: /etc/init.d/foodaemon
私のphpスクリプトでは、
$cmd = "/usr/bin/sudo /etc/init.d/foodaemon start";
exec($cmd,$out,$ret);
私はすべての権限を持っています。perlスクリプトは
#!/usr/bin/perl
use strict;
use warnings;
use Proc::Daemon;
Proc::Daemon::Init;
my $continue = 1;
$SIG{TERM} = sub { $continue = 0 };
close STDIN;
open STDERR,">>/tmp/mylog";
print "My pid: $$\n";
close STDOUT;
while ($continue) {
# ... what I need
}