Skip to content

Commit 3ee39be

Browse files
author
mcramer
committed
FS#2546 - Update all custom php.ini files for webs on main php.ini change
- added configuration options to server config (web tab, php section) - do not update custom php.inis if md5sum file does not exist
1 parent 126bdac commit 3ee39be

File tree

6 files changed

+36
-4
lines changed

6 files changed

+36
-4
lines changed

install/tpl/server.ini.master

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ add_web_users_to_sshusers_group=y
8181
connect_userid_to_webid=n
8282
connect_userid_to_webid_start=10000
8383
web_folder_protection=y
84+
php_ini_check_minutes=1
8485

8586
[dns]
8687
bind_user=root

interface/web/admin/form/server_config.tform.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -686,6 +686,17 @@
686686
'width' => '40',
687687
'maxlength' => '4000'
688688
),
689+
'php_ini_check_minutes' => array(
690+
'datatype' => 'INTEGER',
691+
'formtype' => 'TEXT',
692+
'default' => '1',
693+
'validators' => array(0 => array('type' => 'NOTEMPTY',
694+
'errmsg' => 'php_ini_check_minutes_error_empty'),
695+
),
696+
'value' => '',
697+
'width' => '10',
698+
'maxlength' => '255'
699+
),
689700
'nginx_cgi_socket' => array(
690701
'datatype' => 'VARCHAR',
691702
'formtype' => 'TEXT',

interface/web/admin/lib/lang/de_server_config.lng

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,4 +170,7 @@ $wb['enable_ip_wildcard_txt'] = 'IP Adressen Wildcard (*) aktivieren';
170170
$wb['web_folder_protection_txt'] = 'Webverzeichnis unveränderlich machen (erweiterte Attribute)';
171171
$wb['overtraffic_notify_admin_txt'] = 'Überschreiten des Transfer Limits an den Administrator senden';
172172
$wb['overtraffic_notify_client_txt'] = 'Überschreiten des Transfer Limits an den Kunden senden';
173+
$wb['php_ini_check_minutes_txt'] = 'Prüfe System php.ini Dateien auf Änderungen alle';
174+
$wb['php_ini_check_minutes_info_txt'] = 'Minute(n) (0 deaktiviert diese Funktion)';
175+
$wb['php_ini_check_minutes_error_empty'] = 'Der Wert für die Einstellung der php.ini Prüfung ist ungültig.';
173176
?>

interface/web/admin/lib/lang/en_server_config.lng

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,5 +172,8 @@ $wb["overtraffic_notify_admin_txt"] = 'Send overtraffic notification to admin';
172172
$wb["overtraffic_notify_client_txt"] = 'Send overtraffic notification to client';
173173
$wb["v6_prefix_txt"] = 'IPv6 Prefix';
174174
$wb["vhost_rewrite_v6_txt"] = 'Rewrite IPv6 on Mirror';
175-
$wb["v6_prefix_wrong"] = 'Invalid v6 Netmask format.';
175+
$wb["v6_prefix_wrong"] = 'Invalid v6 Netmask format.';
176+
$wb["php_ini_check_minutes_txt"] = 'Check system php.ini files for changes each';
177+
$wb["php_ini_check_minutes_info_txt"] = 'minutes (0 disables checking)';
178+
$wb['php_ini_check_minutes_error_empty'] = 'Invalid value for php.ini checking.';
176179
?>

interface/web/admin/templates/server_config_web_edit.htm

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,10 @@ <h2><tmpl_var name="list_head_txt"></h2>
195195
<label for="php_open_basedir">{tmpl_var name='php_open_basedir_txt'}</label>
196196
<input name="php_open_basedir" id="php_open_basedir" value="{tmpl_var name='php_open_basedir'}" size="40" type="text" class="textInput" />
197197
</div>
198+
<div class="ctrlHolder">
199+
<label for="php_ini_check_minutes">{tmpl_var name='php_ini_check_minutes_txt'}</label>
200+
<input name="php_ini_check_minutes" id="php_ini_check_minutes" value="{tmpl_var name='php_ini_check_minutes'}" size="40" type="text" class="textInput" /> {tmpl_var name='php_ini_check_minutes_info_txt'}
201+
</div>
198202
</div>
199203
<div class="subsectiontoggle"><span></span>{tmpl_var name='apps_vhost_settings_txt'}<em></em></div>
200204
<div style="display:none;">

server/plugins-available/webserver_plugin.inc.php

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,11 @@ public function check_phpini_changes() {
7979
$web_config = $app->getconf->get_server_config($conf['server_id'], 'web');
8080
$fastcgi_config = $app->getconf->get_server_config($conf['server_id'], 'fastcgi');
8181

82+
if($web_config['php_ini_check_minutes'] == 0 || @date('i') % $web_config['php_ini_check_minutes'] != 0) {
83+
$app->log('Info: php.ini change checking not enabled or not in this minute: ' . $web_config['php_ini_check_minutes'],LOGLEVEL_DEBUG);
84+
return; // do not process
85+
}
86+
8287
//** add default php.ini files to check
8388
$check_files[] = array('file' => $web_config['php_ini_path_apache'],
8489
'mode' => 'mod',
@@ -118,7 +123,12 @@ public function check_phpini_changes() {
118123
$new_php_ini_md5 = array();
119124
$php_ini_md5 = array();
120125
$php_ini_changed = false;
121-
if(file_exists(SCRIPT_PATH . '/php.ini.md5sum')) $php_ini_md5 = unserialize(base64_decode(trim($app->system->file_get_contents(SCRIPT_PATH . '/php.ini.md5sum'))));
126+
$rewrite_ini_files = false;
127+
128+
if(file_exists(SCRIPT_PATH . '/temp/php.ini.md5sum')) {
129+
$rewrite_ini_files = true;
130+
$php_ini_md5 = unserialize(base64_decode(trim($app->system->file_get_contents(SCRIPT_PATH . '/temp/php.ini.md5sum'))));
131+
}
122132
if(!is_array($php_ini_md5)) $php_ini_md5 = array();
123133

124134
$processed = array();
@@ -139,14 +149,14 @@ public function check_phpini_changes() {
139149

140150
$app->log('Info: PHP.ini changed: ' . $file_path . ', mode ' . $file['mode'] . ' vers ' . $file['php_version'] . '.',LOGLEVEL_DEBUG);
141151
// raise action for this file
142-
$app->plugins->raiseAction('php_ini_changed', $file);
152+
if($rewrite_ini_files == true) $app->plugins->raiseAction('php_ini_changed', $file);
143153
}
144154

145155
$new_php_ini_md5[$file_path] = $file_md5;
146156
}
147157

148158
//** write new md5 sums if something changed
149-
if($php_ini_changed == true) $app->system->file_put_contents(SCRIPT_PATH . '/php.ini.md5sum', base64_encode(serialize($new_php_ini_md5)));
159+
if($php_ini_changed == true) $app->system->file_put_contents(SCRIPT_PATH . '/temp/php.ini.md5sum', base64_encode(serialize($new_php_ini_md5)));
150160
unset($new_php_ini_md5);
151161
unset($php_ini_md5);
152162
unset($processed);

0 commit comments

Comments
 (0)