@@ -104,7 +104,7 @@ function php_ini_changed($event_name, $data) {
104104
105105 /* $data contains an array with these keys:
106106 * file -> full path of changed php_ini
107- * mode -> web_domain php modes to change (mod, fast-cgi, php-fpm or '' for all except 'mod')
107+ * mode -> web_domain php modes to change (mod, fast-cgi, php-fpm, hhvm or '' for all except 'mod')
108108 * php_version -> php ini path that changed (additional php versions)
109109 */
110110
@@ -121,6 +121,11 @@ function php_ini_changed($event_name, $data) {
121121 if ($ data ['php_version ' ]) {
122122 $ qrystr .= " AND fastcgi_php_version LIKE '%: " . $ app ->db ->quote ($ data ['php_version ' ]) . ":%' " ;
123123 }
124+ } elseif ($ data ['mode ' ] == 'hhvm ' ) {
125+ $ qrystr .= " AND php = 'hhvm' " ;
126+ if ($ data ['php_version ' ]) {
127+ $ qrystr .= " AND fastcgi_php_version LIKE '%: " . $ app ->db ->quote ($ data ['php_version ' ]) . ":%' " ;
128+ }
124129 } else {
125130 $ qrystr .= " AND php != 'mod' AND php != 'fast-cgi' " ;
126131 }
@@ -1318,7 +1323,7 @@ function update($event_name, $data) {
13181323 * PHP-FPM
13191324 */
13201325 // Support for multiple PHP versions
1321- if ($ data ['new ' ]['php ' ] == 'php-fpm ' ){
1326+ if ($ data ['new ' ]['php ' ] == 'php-fpm ' || $ data [ ' new ' ][ ' php ' ] == ' hhvm ' ){
13221327 if (trim ($ data ['new ' ]['fastcgi_php_version ' ]) != '' ){
13231328 $ default_php_fpm = false ;
13241329 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 @@ function update($event_name, $data) {
13271332 $ default_php_fpm = true ;
13281333 }
13291334 } else {
1330- if (trim ($ data ['old ' ]['fastcgi_php_version ' ]) != '' && $ data ['old ' ]['php ' ] == 'php-fpm ' ){
1335+ if (trim ($ data ['old ' ]['fastcgi_php_version ' ]) != '' && ( $ data ['old ' ]['php ' ] == 'php-fpm ' || $ data [ ' old ' ][ ' php ' ] == ' hhvm ' ) ){
13311336 $ default_php_fpm = false ;
13321337 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 ' ]));
13331338 if (substr ($ custom_php_fpm_ini_dir , -1 ) != '/ ' ) $ custom_php_fpm_ini_dir .= '/ ' ;
@@ -1586,6 +1591,7 @@ function update($event_name, $data) {
15861591 }
15871592
15881593 $ this ->php_fpm_pool_update ($ data , $ web_config , $ pool_dir , $ pool_name , $ socket_dir );
1594+ $ this ->hhvm_update ($ data , $ web_config );
15891595
15901596 if ($ web_config ['check_apache_config ' ] == 'y ' ) {
15911597 //* Test if apache starts with the new configuration file
@@ -1933,6 +1939,8 @@ function delete($event_name, $data) {
19331939 // remove PHP-FPM pool
19341940 if ($ data ['old ' ]['php ' ] == 'php-fpm ' ) {
19351941 $ this ->php_fpm_pool_delete ($ data , $ web_config );
1942+ } elseif ($ data ['old ' ]['php ' ] == 'hhvm ' ) {
1943+ $ this ->hhvm_update ($ data , $ web_config );
19361944 }
19371945
19381946 //remove the php cgi starter script if available
@@ -2722,6 +2730,42 @@ private function awstats_delete ($data, $web_config) {
27222730 }
27232731 }
27242732
2733+ private function hhvm_update ($ data , $ web_config ) {
2734+ global $ app , $ conf ;
2735+
2736+ if (file_exists ($ conf ['rootpath ' ] . '/conf-custom/hhvm_starter.master ' )) {
2737+ $ content = file_get_contents ($ conf ['rootpath ' ] . '/conf-custom/hhvm_starter.master ' );
2738+ } else {
2739+ $ content = file_get_contents ($ conf ['rootpath ' ] . '/conf/hhvm_starter.master ' );
2740+ }
2741+ $ start_content = '' ;
2742+ $ stop_content = '' ;
2743+
2744+ if ($ data ['new ' ]['php ' ] == 'hhvm ' && $ data ['old ' ]['php ' ] != 'hhvm ' ) {
2745+ $ start_content .= 'if [ ! -d /var/run/hhvm ]; then
2746+ mkdir -p -m0777 /var/run/hhvm
2747+ else
2748+ chmod 777 /var/run/hhvm
2749+ fi
2750+ umask 017
2751+ sudo -u ' . $ data ['new ' ]['system_user ' ] . ' touch /var/run/hhvm/hhvm_ ' . $ data ['new ' ]['system_user ' ] . '.pid
2752+ /usr/bin/hhvm --mode daemon -vServer.Type=fastcgi --user ' . $ data ['new ' ]['system_user ' ] . ' -vServer.FileSocket=/tmp/hhvm. ' . $ data ['new ' ]['system_user ' ] . '.sock -vLog.Level=Warning -vLog.UseLogFile=false -vRepo.Central.Path=/tmp/hhvm. ' . $ data ['new ' ]['system_user ' ] . '.hhbc -vPidFile=/var/run/hhvm/hhvm_ ' . $ data ['new ' ]['system_user ' ] . '.pid & echo $! > /var/run/hhvm/hhvm_ ' . $ data ['new ' ]['system_user ' ] . '.pid ' ;
2753+
2754+ $ stop_content .= 'if [[ -e "/var/run/hhvm/hhvm_ ' . $ data ['new ' ]['system_user ' ] . '.pid" ]] ; then kill -SIGTERM `cat /var/run/hhvm/hhvm_ ' . $ data ['new ' ]['system_user ' ] . '.pid` >/dev/null 2>&1 ; fi
2755+ rm -f /tmp/hhvm. ' . $ data ['new ' ]['system_user ' ] . '.sock /tmp/hhvm. ' . $ data ['new ' ]['system_user ' ] . '.hhbc /var/run/hhvm/hhvm_ ' . $ data ['new ' ]['system_user ' ] . '.pid ' ;
2756+
2757+ $ content = str_replace (array ('{START} ' , '{STOP} ' , '{SYSTEM_USER} ' ), array ($ start_content , $ stop_content , $ data ['new ' ]['system_user ' ]), $ content );
2758+ file_put_contents ('/etc/init.d/hhvm_ ' . $ data ['new ' ]['system_user ' ], $ content );
2759+ exec ('chmod +x /etc/init.d/hhvm_ ' . $ data ['new ' ]['system_user ' ] . ' >/dev/null 2>&1 ' );
2760+ exec ('/usr/sbin/update-rc.d hhvm_ ' . $ data ['new ' ]['system_user ' ] . ' defaults >/dev/null 2>&1 ' );
2761+ exec ('/etc/init.d/hhvm_ ' . $ data ['new ' ]['system_user ' ] . ' start >/dev/null 2>&1 ' );
2762+ } elseif ($ data ['new ' ]['php ' ] != 'hhvm ' && $ data ['old ' ]['php ' ] == 'hhvm ' ) {
2763+ exec ('/etc/init.d/hhvm_ ' . $ data ['old ' ]['system_user ' ] . ' stop >/dev/null 2>&1 ' );
2764+ exec ('/usr/sbin/update-rc.d hhvm_ ' . $ data ['old ' ]['system_user ' ] . ' remove >/dev/null 2>&1 ' );
2765+ unlink ('/etc/init.d/hhvm_ ' . $ data ['old ' ]['system_user ' ] . ' >/dev/null 2>&1 ' );
2766+ }
2767+ }
2768+
27252769 //* Update the PHP-FPM pool configuration file
27262770 private function php_fpm_pool_update ($ data , $ web_config , $ pool_dir , $ pool_name , $ socket_dir ) {
27272771 global $ app , $ conf ;
0 commit comments