function background() {
$pid = pcntl_fork();
if ($pid < 0) { # error
+ common_log(LOG_ERR, "Could not fork.");
return false;
} else if ($pid > 0) { # parent
common_log(LOG_INFO, "Successfully forked.");
return false;
}
- file_put_contents($pidfilename, posix_getpid());
+ return file_put_contents($pidfilename, posix_getpid() . "\n");
}
function clearPidFile() {
$pidfilename = $this->pidFilename();
- unlink($pidfilename);
+ if (!$pidfilename) {
+ return false;
+ }
+ return unlink($pidfilename);
}
function pidFilename() {
function changeUser() {
- if (common_config('daemon', 'user')) {
- $user_info = posix_getpwnam(common_config('daemon', 'user'));
- common_log(LOG_INFO, "Setting user to " . common_config('daemon', 'user'));
- posix_setuid($user_info['uid']);
+ $username = common_config('daemon', 'user');
+
+ if ($username) {
+ $user_info = posix_getpwnam($username);
+ if (!$user_info) {
+ common_log(LOG_WARNING, 'Ignoring unknown user for daemon: ' . $username);
+ } else {
+ common_log(LOG_INFO, "Setting user to " . $username);
+ posix_setuid($user_info['uid']);
+ }
}
+
+ $groupname = common_config('daemon', 'group');
- if (common_config('daemon', 'group')) {
- $group_info = posix_getgrnam(common_config('daemon', 'group'));
- common_log(LOG_INFO, "Setting group to " . common_config('daemon', 'group'));
- posix_setgid($group_info['gid']);
+ if ($groupname) {
+ $group_info = posix_getgrnam($groupname);
+ if (!$group_info) {
+ common_log(LOG_WARNING, 'Ignoring unknown group for daemon: ' . $groupname);
+ } else {
+ common_log(LOG_INFO, "Setting group to " . $groupname);
+ posix_setgid($group_info['gid']);
+ }
}
}