From e1ceb050e19c7574bca146a8da7047ee4ff456b5 Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Sun, 10 Jul 2016 05:02:35 -0400
Subject: [PATCH] Merge branch 'stable-3.1'
---
server/mods-available/web_module.inc.php | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 50 insertions(+), 5 deletions(-)
diff --git a/server/mods-available/web_module.inc.php b/server/mods-available/web_module.inc.php
index c31aa67..6d3e8c1 100644
--- a/server/mods-available/web_module.inc.php
+++ b/server/mods-available/web_module.inc.php
@@ -203,7 +203,7 @@
$daemon = $web_config['server_type'];
break;
default:
- if(is_file($conf['init_scripts'] . '/' . 'httpd')) {
+ if(is_file($conf['init_scripts'] . '/' . 'httpd') || is_dir('/etc/httpd')) {
$daemon = 'httpd';
} else {
$daemon = 'apache2';
@@ -212,11 +212,35 @@
$retval = array('output' => '', 'retval' => 0);
if($action == 'restart') {
- exec($app->system->getinitcommand($daemon, 'restart').' 2>&1', $retval['output'], $retval['retval']);
-
+ $cmd = $app->system->getinitcommand($daemon, 'restart');
} else {
- exec($app->system->getinitcommand($daemon, 'reload').' 2>&1', $retval['output'], $retval['retval']);
+ $cmd = $app->system->getinitcommand($daemon, 'reload');
}
+
+ if($web_config['server_type'] == 'nginx'){
+ $app->log("Checking nginx configuration...", LOGLEVEL_DEBUG);
+ exec('nginx -t 2>&1', $retval['output'], $retval['retval']);
+ if($retval['retval'] == 0){
+ $app->log("nginx configuration ok!", LOGLEVEL_DEBUG);
+ } else {
+ $app->log("nginx config test failed!", LOGLEVEL_DEBUG);
+ return $retval;
+ }
+ }
+
+ exec($cmd.' 2>&1', $retval['output'], $retval['retval']);
+
+ // if restart failed despite successful syntax check => try again
+ if($web_config['server_type'] == 'nginx' && $retval['retval'] > 0){
+ sleep(2);
+ exec($cmd.' 2>&1', $retval['output'], $retval['retval']);
+ }
+ $app->log("Restarting httpd: $cmd", LOGLEVEL_DEBUG);
+
+ // nginx: do a syntax check because on some distributions, the init script always returns 0 - even if the syntax is not ok (how stupid is that?)
+ //if($web_config['server_type'] == 'nginx' && $retval['retval'] == 0){
+ //exec('nginx -t 2>&1', $retval['output'], $retval['retval']);
+ //}
return $retval;
}
@@ -241,16 +265,37 @@
// @see: https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1242376
if(file_exists('/etc/os-release')) {
$tmp = file_get_contents('/etc/os-release');
- if(preg_match('/^ID=ubuntu/m', $tmp) && preg_match('/^VERSION_ID="14\.04"/m', $tmp)) {
+ //if(preg_match('/^ID=ubuntu/m', $tmp) && preg_match('/^VERSION_ID="14\.04"/m', $tmp)) {
+ if(preg_match('/^ID=ubuntu/m', $tmp) && preg_match('/^VERSION_ID="14\.04"/m', $tmp) && stristr(phpversion(), 'deb.sury.org') === false) {
$initcommand = '/sbin/start-stop-daemon --stop --signal USR2 --quiet --pidfile /var/run/php5-fpm.pid --name php5-fpm';
+ }
+ // And the next workaround, php-fpm reloads in centos 7 downt work as well.
+ /*
+ if(preg_match('/^ID=centos/m', $tmp) && preg_match('/^VERSION_ID="7"/m', $tmp)) {
+ $initcommand = 'systemctl restart php-fpm.service';
+ }
+ */
+ unset($tmp);
+ }
+ }
+ /*
+ if($action == 'reload') {
+ // And the next workaround, php-fpm reloads in centos 7 downt work as well.
+ if(file_exists('/etc/os-release')) {
+ $tmp = file_get_contents('/etc/os-release');
+ // And the next workaround, php-fpm reloads in centos 7 downt work as well.
+ if(preg_match('/^ID="centos"/m', $tmp) && preg_match('/^VERSION_ID="7"/m', $tmp)) {
+ $initcommand = 'systemctl restart php-fpm.service';
}
unset($tmp);
}
}
+ */
}
$retval = array('output' => '', 'retval' => 0);
exec($initcommand.' 2>&1', $retval['output'], $retval['retval']);
+ $app->log("Restarting php-fpm: $initcommand", LOGLEVEL_DEBUG);
return $retval;
}
--
Gitblit v1.9.1