Marius Cramer
2014-04-30 1c6da3502e13ca5391b5ece1349b8401876e4b99
server/plugins-available/apache2_plugin.inc.php
@@ -104,7 +104,7 @@
      /* $data contains an array with these keys:
         * file -> full path of changed php_ini
         * mode -> web_domain php modes to change (mod, fast-cgi, php-fpm or '' for all except 'mod')
         * mode -> web_domain php modes to change (mod, fast-cgi, php-fpm, hhvm or '' for all except 'mod')
         * php_version -> php ini path that changed (additional php versions)
         */
@@ -118,6 +118,11 @@
         }
      } elseif($data['mode'] == 'php-fpm') {
         $qrystr .= " AND php = 'php-fpm'";
         if($data['php_version']) {
            $qrystr .= " AND fastcgi_php_version LIKE '%:" . $app->db->quote($data['php_version']) . ":%'";
         }
      } elseif($data['mode'] == 'hhvm') {
         $qrystr .= " AND php = 'hhvm'";
         if($data['php_version']) {
            $qrystr .= " AND fastcgi_php_version LIKE '%:" . $app->db->quote($data['php_version']) . ":%'";
         }
@@ -1318,7 +1323,7 @@
       * PHP-FPM
       */
      // Support for multiple PHP versions
      if($data['new']['php'] == 'php-fpm'){
      if($data['new']['php'] == 'php-fpm' || $data['new']['php'] == 'hhvm'){
         if(trim($data['new']['fastcgi_php_version']) != ''){
            $default_php_fpm = false;
            list($custom_php_fpm_name, $custom_php_fpm_init_script, $custom_php_fpm_ini_dir, $custom_php_fpm_pool_dir) = explode(':', trim($data['new']['fastcgi_php_version']));
@@ -1327,7 +1332,7 @@
            $default_php_fpm = true;
         }
      } else {
         if(trim($data['old']['fastcgi_php_version']) != '' && $data['old']['php'] == 'php-fpm'){
         if(trim($data['old']['fastcgi_php_version']) != '' && ($data['old']['php'] == 'php-fpm' || $data['old']['php'] == 'hhvm')){
            $default_php_fpm = false;
            list($custom_php_fpm_name, $custom_php_fpm_init_script, $custom_php_fpm_ini_dir, $custom_php_fpm_pool_dir) = explode(':', trim($data['old']['fastcgi_php_version']));
            if(substr($custom_php_fpm_ini_dir, -1) != '/') $custom_php_fpm_ini_dir .= '/';
@@ -1586,6 +1591,7 @@
      }
      $this->php_fpm_pool_update($data, $web_config, $pool_dir, $pool_name, $socket_dir);
      $this->hhvm_update($data, $web_config);
      if($web_config['check_apache_config'] == 'y') {
         //* Test if apache starts with the new configuration file
@@ -1933,6 +1939,8 @@
            // remove PHP-FPM pool
            if ($data['old']['php'] == 'php-fpm') {
               $this->php_fpm_pool_delete($data, $web_config);
            } elseif($data['old']['php'] == 'hhvm') {
               $this->hhvm_update($data, $web_config);
            }
            //remove the php cgi starter script if available
@@ -2722,6 +2730,28 @@
      }
   }
   private function hhvm_update($data, $web_config) {
      global $app, $conf;
      if(file_exists($conf['rootpath'] . '/conf-custom/hhvm_starter.master')) {
         $content = file_get_contents($conf['rootpath'] . '/conf-custom/hhvm_starter.master');
      } else {
         $content = file_get_contents($conf['rootpath'] . '/conf/hhvm_starter.master');
      }
      if($data['new']['php'] == 'hhvm' && $data['old']['php'] != 'hhvm') {
         $content = str_replace('{SYSTEM_USER}', $data['new']['system_user'], $content);
         file_put_contents('/etc/init.d/hhvm_' . $data['new']['system_user'], $content);
         exec('chmod +x /etc/init.d/hhvm_' . $data['new']['system_user'] . ' >/dev/null 2>&1');
         exec('/usr/sbin/update-rc.d hhvm_' . $data['new']['system_user'] . ' defaults >/dev/null 2>&1');
         exec('/etc/init.d/hhvm_' . $data['new']['system_user'] . ' start >/dev/null 2>&1');
       } elseif($data['new']['php'] != 'hhvm' && $data['old']['php'] == 'hhvm') {
         exec('/etc/init.d/hhvm_' . $data['old']['system_user'] . ' stop >/dev/null 2>&1');
         exec('/usr/sbin/update-rc.d hhvm_' . $data['old']['system_user'] . ' remove >/dev/null 2>&1');
         unlink('/etc/init.d/hhvm_' . $data['old']['system_user'] . ' >/dev/null 2>&1');
      }
   }
   //* Update the PHP-FPM pool configuration file
   private function php_fpm_pool_update ($data, $web_config, $pool_dir, $pool_name, $socket_dir) {
      global $app, $conf;