]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/daemon.php
Merge commit 'refs/merge-requests/41' of https://gitorious.org/social/mainline into...
[quix0rs-gnu-social.git] / lib / daemon.php
index 4c2491e97bca284cb6234820b0749f4e61241517..eaeecc10589531325cd2506fbd421300ad11a2f4 100644 (file)
@@ -48,6 +48,16 @@ class Daemon
 
     function background()
     {
+        /*
+         * This prefers to Starting PHP 5.4 (dotdeb), maybe earlier for some version/distrib
+         * seems MySQL connection using mysqli driver get lost when fork.
+         * Need to unset it so that child process recreate it.
+         *
+         * @todo FIXME cleaner way to do it ?
+         */
+        global $_DB_DATAOBJECT;
+        unset($_DB_DATAOBJECT['CONNECTIONS']);
+
         $pid = pcntl_fork();
         if ($pid < 0) { // error
             common_log(LOG_ERR, "Could not fork.");
@@ -114,19 +124,6 @@ class Daemon
 
     function changeUser()
     {
-        $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 ($groupname) {
@@ -139,6 +136,19 @@ class Daemon
                 posix_setgid($group_info['gid']);
             }
         }
+
+        $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']);
+            }
+        }
     }
 
     function runOnce()