diff --git a/install/dist/conf/centos52.conf.php b/install/dist/conf/centos52.conf.php
index d32f69b173b6950efe6543241f26edf16e6fb5ea..396fd807da23b502b30a24a82631041d58a41243 100644
--- a/install/dist/conf/centos52.conf.php
+++ b/install/dist/conf/centos52.conf.php
@@ -192,6 +192,7 @@ $conf['nginx']['php_fpm_init_script'] = 'php-fpm';
$conf['nginx']['php_fpm_ini_path'] = '/etc/php.ini';
$conf['nginx']['php_fpm_pool_dir'] = '/etc/php-fpm.d';
$conf['nginx']['php_fpm_start_port'] = 9010;
+$conf['nginx']['php_fpm_socket_dir'] = '/var/run/php5-fpm';
//* vlogger
$conf['vlogger']['config_dir'] = '/etc';
diff --git a/install/dist/conf/centos53.conf.php b/install/dist/conf/centos53.conf.php
index d32f69b173b6950efe6543241f26edf16e6fb5ea..396fd807da23b502b30a24a82631041d58a41243 100644
--- a/install/dist/conf/centos53.conf.php
+++ b/install/dist/conf/centos53.conf.php
@@ -192,6 +192,7 @@ $conf['nginx']['php_fpm_init_script'] = 'php-fpm';
$conf['nginx']['php_fpm_ini_path'] = '/etc/php.ini';
$conf['nginx']['php_fpm_pool_dir'] = '/etc/php-fpm.d';
$conf['nginx']['php_fpm_start_port'] = 9010;
+$conf['nginx']['php_fpm_socket_dir'] = '/var/run/php5-fpm';
//* vlogger
$conf['vlogger']['config_dir'] = '/etc';
diff --git a/install/dist/conf/debian40.conf.php b/install/dist/conf/debian40.conf.php
index b884a89da246ab060f421485e3ca69d9278573fb..0c42d7de59360d8a6c300e70dd434fa1708bf50c 100644
--- a/install/dist/conf/debian40.conf.php
+++ b/install/dist/conf/debian40.conf.php
@@ -204,6 +204,7 @@ $conf['nginx']['php_fpm_init_script'] = 'php5-fpm';
$conf['nginx']['php_fpm_ini_path'] = '/etc/php5/fpm/php.ini';
$conf['nginx']['php_fpm_pool_dir'] = '/etc/php5/fpm/pool.d';
$conf['nginx']['php_fpm_start_port'] = 9010;
+$conf['nginx']['php_fpm_socket_dir'] = '/var/run/php5-fpm';
//*Ufw
$conf['ufw']['installed'] = false;
diff --git a/install/dist/conf/debian60.conf.php b/install/dist/conf/debian60.conf.php
index 4af85b80c5a837ed1d71291db845bcc1c6ea57a5..35e616010cddf3c4dd9a057f2f5289f550c5ff36 100644
--- a/install/dist/conf/debian60.conf.php
+++ b/install/dist/conf/debian60.conf.php
@@ -204,6 +204,7 @@ $conf['nginx']['php_fpm_init_script'] = 'php5-fpm';
$conf['nginx']['php_fpm_ini_path'] = '/etc/php5/fpm/php.ini';
$conf['nginx']['php_fpm_pool_dir'] = '/etc/php5/fpm/pool.d';
$conf['nginx']['php_fpm_start_port'] = 9010;
+$conf['nginx']['php_fpm_socket_dir'] = '/var/run/php5-fpm';
//* Ufw
$conf['ufw']['installed'] = false;
diff --git a/install/dist/conf/fedora9.conf.php b/install/dist/conf/fedora9.conf.php
index 3e1bda1147c47d4cf2f1e5a38fced48934e224cd..6e5e52944a98702a97ea84eece7758d0b3a41fee 100644
--- a/install/dist/conf/fedora9.conf.php
+++ b/install/dist/conf/fedora9.conf.php
@@ -192,6 +192,7 @@ $conf['nginx']['php_fpm_init_script'] = 'php-fpm';
$conf['nginx']['php_fpm_ini_path'] = '/etc/php.ini';
$conf['nginx']['php_fpm_pool_dir'] = '/etc/php-fpm.d';
$conf['nginx']['php_fpm_start_port'] = 9010;
+$conf['nginx']['php_fpm_socket_dir'] = '/var/run/php5-fpm';
//* vlogger
$conf['vlogger']['config_dir'] = '/etc';
diff --git a/install/dist/conf/gentoo.conf.php b/install/dist/conf/gentoo.conf.php
index 8ed4fee96a9c56db767221a85bed2c7c25d4e9f9..c2c0a6e921dccf3cff75ac542df63f75f6f036f4 100644
--- a/install/dist/conf/gentoo.conf.php
+++ b/install/dist/conf/gentoo.conf.php
@@ -208,6 +208,7 @@ $conf['nginx']['php_fpm_init_script'] = 'php5-fpm';
$conf['nginx']['php_fpm_ini_path'] = '/etc/php5/fpm/php.ini';
$conf['nginx']['php_fpm_pool_dir'] = '/etc/php5/fpm/pool.d';
$conf['nginx']['php_fpm_start_port'] = 9010;
+$conf['nginx']['php_fpm_socket_dir'] = '/var/run/php5-fpm';
//* vlogger
$conf['vlogger']['config_dir'] = '/etc/vlogger';
diff --git a/install/dist/conf/opensuse110.conf.php b/install/dist/conf/opensuse110.conf.php
index 6cb0a788d357fdfa256fc70e007076611fc1f5a5..755e673365c85b2c67ce8f9dbb001b890ada67b1 100644
--- a/install/dist/conf/opensuse110.conf.php
+++ b/install/dist/conf/opensuse110.conf.php
@@ -192,6 +192,7 @@ $conf['nginx']['php_fpm_init_script'] = 'php-fpm';
$conf['nginx']['php_fpm_ini_path'] = '/etc/php5/fpm/php.ini';
$conf['nginx']['php_fpm_pool_dir'] = '/etc/php5/fpm';
$conf['nginx']['php_fpm_start_port'] = 9010;
+$conf['nginx']['php_fpm_socket_dir'] = '/var/run/php5-fpm';
//* vlogger
$conf['vlogger']['config_dir'] = '/etc';
diff --git a/install/dist/conf/opensuse112.conf.php b/install/dist/conf/opensuse112.conf.php
index fe114f02a384c058fc608f426e2ef03b23654dd4..1402ad67d6ed8b0b7c029cd58fd26a38044e05c1 100644
--- a/install/dist/conf/opensuse112.conf.php
+++ b/install/dist/conf/opensuse112.conf.php
@@ -192,6 +192,7 @@ $conf['nginx']['php_fpm_init_script'] = 'php-fpm';
$conf['nginx']['php_fpm_ini_path'] = '/etc/php5/fpm/php.ini';
$conf['nginx']['php_fpm_pool_dir'] = '/etc/php5/fpm';
$conf['nginx']['php_fpm_start_port'] = 9010;
+$conf['nginx']['php_fpm_socket_dir'] = '/var/run/php5-fpm';
//* vlogger
$conf['vlogger']['config_dir'] = '/etc';
diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php
index 7e6fc23790ab38c31f1dd2f727a86218a8688332..f3e7ef4be83eb9ed49703f6114109e0976ee3a8b 100644
--- a/install/lib/installer_base.lib.php
+++ b/install/lib/installer_base.lib.php
@@ -243,6 +243,7 @@ class installer_base {
$tpl_ini_array['web']['php_fpm_ini_path'] = $conf['nginx']['php_fpm_ini_path'];
$tpl_ini_array['web']['php_fpm_pool_dir'] = $conf['nginx']['php_fpm_pool_dir'];
$tpl_ini_array['web']['php_fpm_start_port'] = $conf['nginx']['php_fpm_start_port'];
+ $tpl_ini_array['web']['php_fpm_socket_dir'] = $conf['nginx']['php_fpm_socket_dir'];
$tpl_ini_array['web']['server_type'] = 'nginx';
$tpl_ini_array['global']['webserver'] = 'nginx';
}
diff --git a/install/lib/update.lib.php b/install/lib/update.lib.php
index fc4a5e3ebc78eab170a86f8538b4137621ea6e36..b75a55f711e6e2691c9b5e8719ea88ad90003765 100644
--- a/install/lib/update.lib.php
+++ b/install/lib/update.lib.php
@@ -270,6 +270,7 @@ function updateDbAndIni() {
$tpl_ini_array['web']['php_fpm_ini_path'] = $conf['nginx']['php_fpm_ini_path'];
$tpl_ini_array['web']['php_fpm_pool_dir'] = $conf['nginx']['php_fpm_pool_dir'];
$tpl_ini_array['web']['php_fpm_start_port'] = $conf['nginx']['php_fpm_start_port'];
+ $tpl_ini_array['web']['php_fpm_socket_dir'] = $conf['nginx']['php_fpm_socket_dir'];
$tpl_ini_array['web']['server_type'] = 'nginx';
$tpl_ini_array['global']['webserver'] = 'nginx';
}
diff --git a/install/sql/incremental/upd_0021.sql b/install/sql/incremental/upd_0021.sql
new file mode 100644
index 0000000000000000000000000000000000000000..09994e20b6d3aae19a548beee0ff0864f7f24712
--- /dev/null
+++ b/install/sql/incremental/upd_0021.sql
@@ -0,0 +1 @@
+ALTER TABLE `web_domain` ADD `php_fpm_use_socket` ENUM( 'n', 'y' ) NOT NULL DEFAULT 'n' AFTER `nginx_directives`;
\ No newline at end of file
diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql
index e8162b8e839cf1c6eae8ceac07a73b26f1252f28..0a9d8d99dd6c714d75af0c1450267d8cd92648e0 100644
--- a/install/sql/ispconfig3.sql
+++ b/install/sql/ispconfig3.sql
@@ -1510,6 +1510,7 @@ CREATE TABLE `web_domain` (
`allow_override` varchar(255) NOT NULL default 'All',
`apache_directives` mediumtext,
`nginx_directives` mediumtext,
+ `php_fpm_use_socket` ENUM('n','y') NOT NULL DEFAULT 'n'
`php_open_basedir` mediumtext,
`custom_php_ini` mediumtext,
`backup_interval` VARCHAR( 255 ) NOT NULL DEFAULT 'none',
diff --git a/install/tpl/server.ini.master b/install/tpl/server.ini.master
index 6c647a40dfda0a3a50d758feff9c1b71720876c7..251859ae37c85b02855cf6889f3d64627c03c729 100644
--- a/install/tpl/server.ini.master
+++ b/install/tpl/server.ini.master
@@ -66,6 +66,7 @@ php_fpm_init_script=php5-fpm
php_fpm_ini_path=/etc/php5/fpm/php.ini
php_fpm_pool_dir=/etc/php5/fpm/pool.d
php_fpm_start_port=9010
+php_fpm_socket_dir=/var/run/php5-fpm
[dns]
bind_user=root
diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php
index 3f574af8737cf008f449eb33560f572d2531fc33..43346e2932ad7bdca320f20a9acf1873dbc5490b 100644
--- a/interface/web/admin/form/server_config.tform.php
+++ b/interface/web/admin/form/server_config.tform.php
@@ -548,6 +548,17 @@ $form["tabs"]['web'] = array(
'width' => '40',
'maxlength' => '255'
),
+ 'php_fpm_socket_dir' => array(
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'validators' => array(0 => array('type' => 'NOTEMPTY',
+ 'errmsg' => 'php_fpm_socket_dir_error_empty'),
+ ),
+ 'value' => '',
+ 'width' => '40',
+ 'maxlength' => '255'
+ ),
'php_open_basedir' => array(
'datatype' => 'VARCHAR',
'formtype' => 'TEXT',
diff --git a/interface/web/admin/lib/lang/de_server_config.lng b/interface/web/admin/lib/lang/de_server_config.lng
index 9ce6e27390c653682bb30fb51e7a06b771270601..e03e6dceaef3f6e109920503cd81b5a55aaac400 100644
--- a/interface/web/admin/lib/lang/de_server_config.lng
+++ b/interface/web/admin/lib/lang/de_server_config.lng
@@ -139,4 +139,6 @@ $wb["php_fpm_pool_dir_txt"] = 'PHP-FPM pool Verzeichnis';
$wb["php_fpm_pool_dir_error_empty"] = 'PHP-FPM pool Verzeichnis ist leer.';
$wb["php_fpm_start_port_txt"] = 'PHP-FPM Start-Port';
$wb["php_fpm_start_port_error_empty"] = 'PHP-FPM Start-Port ist leer.';
+$wb["php_fpm_socket_dir_txt"] = 'PHP-FPM Socket-Verzeichnis';
+$wb["php_fpm_socket_dir_error_empty"] = 'PHP-FPM Socket-Verzeichnis ist leer.';
?>
diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng
index 745e3a60a0be4b276162d246cb4bd8ffdba3262d..a2ad3a87dfb25aaebeee582880d38f41cf979c1a 100644
--- a/interface/web/admin/lib/lang/en_server_config.lng
+++ b/interface/web/admin/lib/lang/en_server_config.lng
@@ -141,6 +141,8 @@ $wb["php_fpm_pool_dir_txt"] = 'PHP-FPM pool directory';
$wb["php_fpm_pool_dir_error_empty"] = 'PHP-FPM pool directory is empty.';
$wb["php_fpm_start_port_txt"] = 'PHP-FPM start port';
$wb["php_fpm_start_port_error_empty"] = 'PHP-FPM start port is empty.';
+$wb["php_fpm_socket_dir_txt"] = 'PHP-FPM socket directory';
+$wb["php_fpm_socket_dir_error_empty"] = 'PHP-FPM socket directory is empty.';
$wb["try_rescue_txt"] = 'Enable service monitoring and restart on failure';
$wb["do_not_try_rescue_apache_txt"] = 'Disable apache monitoring';
$wb["do_not_try_rescue_mysql_txt"] = 'Disable MySQL monitoring';
diff --git a/interface/web/admin/templates/server_config_web_edit.htm b/interface/web/admin/templates/server_config_web_edit.htm
index 4b85025f51f9a0958adade1e317fe8cda49d9dc9..7eb707cb05fcb607d15ae7c9a02b26d4a5414151 100644
--- a/interface/web/admin/templates/server_config_web_edit.htm
+++ b/interface/web/admin/templates/server_config_web_edit.htm
@@ -108,6 +108,10 @@
+
+
+
+
diff --git a/interface/web/sites/form/web_domain.tform.php b/interface/web/sites/form/web_domain.tform.php
index 362a154c3211c7f5ba7af8918e8c82dff15e8eb2..5e3a87355260e0d610591cb88ca06d0aced4e272 100644
--- a/interface/web/sites/form/web_domain.tform.php
+++ b/interface/web/sites/form/web_domain.tform.php
@@ -488,6 +488,12 @@ $form["tabs"]['advanced'] = array (
'width' => '30',
'maxlength' => '255'
),
+ 'php_fpm_use_socket' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'CHECKBOX',
+ 'default' => 'n',
+ 'value' => array(0 => 'n',1 => 'y')
+ ),
'php_open_basedir' => array (
'datatype' => 'VARCHAR',
'formtype' => 'TEXT',
diff --git a/interface/web/sites/lib/lang/de_web_domain.lng b/interface/web/sites/lib/lang/de_web_domain.lng
index 1226b476111506891425847f33eda02faddafe5a..cfd3ac922aa4dc9db66793080b20bfd4cf9a5195 100644
--- a/interface/web/sites/lib/lang/de_web_domain.lng
+++ b/interface/web/sites/lib/lang/de_web_domain.lng
@@ -76,4 +76,5 @@ $wb['nginx_directives_txt'] = 'nginx Direktiven';
$wb["seo_redirect_txt"] = 'SEO Redirect';
$wb["non_www_to_www_txt"] = 'Nicht-www -> www';
$wb["www_to_non_www_txt"] = 'www -> Nicht-www';
+$wb["php_fpm_use_socket_txt"] = 'Benutze Socket für PHP-FPM';
?>
diff --git a/interface/web/sites/lib/lang/en_web_domain.lng b/interface/web/sites/lib/lang/en_web_domain.lng
index fb85dcbbe241c2aa7129d8ab4f5d3244929469ba..9bc71ad45d8bfc73f9ae3e90bec00d7201bfa3da 100644
--- a/interface/web/sites/lib/lang/en_web_domain.lng
+++ b/interface/web/sites/lib/lang/en_web_domain.lng
@@ -76,4 +76,5 @@ $wb["nginx_directives_txt"] = 'nginx Directives';
$wb["seo_redirect_txt"] = 'SEO Redirect';
$wb["non_www_to_www_txt"] = 'Non-www -> www';
$wb["www_to_non_www_txt"] = 'www -> non-www';
+$wb["php_fpm_use_socket_txt"] = 'Use Socket For PHP-FPM';
?>
\ No newline at end of file
diff --git a/interface/web/sites/templates/web_domain_advanced.htm b/interface/web/sites/templates/web_domain_advanced.htm
index 92a77c03bf495a529f308a1d0f4908e196ef34b4..b815d0e0bcca485f851b10577332ad88ac7b361b 100644
--- a/interface/web/sites/templates/web_domain_advanced.htm
+++ b/interface/web/sites/templates/web_domain_advanced.htm
@@ -20,6 +20,12 @@
+
+
{tmpl_var name='php_fpm_use_socket_txt'}
+
+ {tmpl_var name='php_fpm_use_socket'}
+
+
diff --git a/server/conf/nginx_vhost.conf.master b/server/conf/nginx_vhost.conf.master
index 0f434819816834f0b53e5806b47a925a86f27285..df52349c8195e634f399090814d93eef96dac6a0 100644
--- a/server/conf/nginx_vhost.conf.master
+++ b/server/conf/nginx_vhost.conf.master
@@ -75,7 +75,8 @@ server {
location ~ \.php$ {
try_files $uri =404;
- fastcgi_pass 127.0.0.1:;
+ fastcgi_pass 127.0.0.1:;
+ fastcgi_pass unix:;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
diff --git a/server/conf/php_fpm_pool.conf.master b/server/conf/php_fpm_pool.conf.master
index 6736647bd8d1afa35cea083098b12e77b02f1169..75127b4955e5858f6278cd5d515dfcc122001828 100644
--- a/server/conf/php_fpm_pool.conf.master
+++ b/server/conf/php_fpm_pool.conf.master
@@ -1,8 +1,12 @@
[]
-listen = 127.0.0.1:
+listen = 127.0.0.1:
+listen.allowed_clients = 127.0.0.1
-listen.allowed_clients = 127.0.0.1
+listen =
+listen.owner =
+listen.group =
+listen.mode = 0660
user =
group =
diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php
index 4d6edefda056c403b366de7b56babe54dafd9e04..92ca082312ef03e7b8e01400ec58b2c27231b2a8 100644
--- a/server/plugins-available/nginx_plugin.inc.php
+++ b/server/plugins-available/nginx_plugin.inc.php
@@ -639,6 +639,25 @@ class nginx_plugin {
$vhost_data['web_document_root_www'] = $web_config['website_basedir'].'/'.$data['new']['domain'].'/web';
$vhost_data['web_basedir'] = $web_config['website_basedir'];
$vhost_data['ssl_domain'] = $data['new']['ssl_domain'];
+
+ // PHP-FPM
+ $pool_dir = escapeshellcmd($web_config['php_fpm_pool_dir']);
+ if(substr($pool_dir,-1) != '/') $pool_dir .= '/';
+ $pool_name = 'web'.$data['new']['domain_id'];
+ $socket_dir = escapeshellcmd($web_config['php_fpm_socket_dir']);
+ if(substr($socket_dir,-1) != '/') $socket_dir .= '/';
+
+ if($data['new']['php_fpm_use_socket'] == 'y'){
+ $use_tcp = '#';
+ $use_socket = '';
+ } else {
+ $use_tcp = '';
+ $use_socket = '#';
+ }
+ $tpl->setVar('use_tcp', $use_tcp);
+ $tpl->setVar('use_socket', $use_socket);
+ $fpm_socket = $socket_dir.$pool_name.'.sock';
+ $tpl->setVar('fpm_socket', $fpm_socket);
$vhost_data['fpm_port'] = $web_config['php_fpm_start_port'] + $data['new']['domain_id'] + 1;
// Custom nginx directives
@@ -870,7 +889,7 @@ class nginx_plugin {
$this->awstats_update($data,$web_config);
}
- $this->php_fpm_pool_update($data,$web_config);
+ $this->php_fpm_pool_update($data,$web_config,$pool_dir,$pool_name,$socket_dir);
if($web_config['check_apache_config'] == 'y') {
//* Test if nginx starts with the new configuration file
@@ -1073,89 +1092,95 @@ class nginx_plugin {
}
//* Update the PHP-FPM pool configuration file
- private function php_fpm_pool_update ($data,$web_config) {
+ private function php_fpm_pool_update ($data,$web_config,$pool_dir,$pool_name,$socket_dir) {
global $app, $conf;
-
- $pool_dir = $web_config['php_fpm_pool_dir'];
- $pool_name = 'web'.$data['new']['domain_id'];
//$reload = false;
if($data['new']['php'] == 'no'){
- if(@is_file($pool_dir.'/'.$pool_name.'.conf')){
- unlink($pool_dir.'/'.$pool_name.'.conf');
+ if(@is_file($pool_dir.$pool_name.'.conf')){
+ unlink($pool_dir.$pool_name.'.conf');
//$reload = true;
}
//if($reload == true) $app->services->restartService('php-fpm','reload');
return;
}
-
- //if(!@is_file($pool_dir.'/'.$data['new']['domain'].'.conf') || ($data['old']['domain'] != '' && $data['new']['domain'] != $data['old']['domain'])) {
- //if ( @is_file($pool_dir.'/'.$pool_name.'.conf') ) {
- // unlink($pool_dir.'/'.$pool_name.'.conf');
- //}
- $app->uses("getconf");
- $web_config = $app->getconf->get_server_config($conf["server_id"], 'web');
+ $app->uses("getconf");
+ $web_config = $app->getconf->get_server_config($conf["server_id"], 'web');
- $app->load('tpl');
- $tpl = new tpl();
- $tpl->newTemplate('php_fpm_pool.conf.master');
-
- $tpl->setVar('fpm_pool', $pool_name);
- $tpl->setVar('fpm_port', $web_config['php_fpm_start_port'] + $data['new']['domain_id'] + 1);
- $tpl->setVar('fpm_user', $data['new']['system_user']);
- $tpl->setVar('fpm_group', $data['new']['system_group']);
- $tpl->setVar('security_level',$web_config['security_level']);
- $php_open_basedir = ($data['new']['php_open_basedir'] == '')?escapeshellcmd($data['new']['document_root']):escapeshellcmd($data['new']['php_open_basedir']);
- $tpl->setVar('php_open_basedir', $php_open_basedir);
- if($php_open_basedir != ''){
- $tpl->setVar('enable_php_open_basedir', '');
- } else {
- $tpl->setVar('enable_php_open_basedir', ';');
- }
+ $app->load('tpl');
+ $tpl = new tpl();
+ $tpl->newTemplate('php_fpm_pool.conf.master');
+
+ if($data['new']['php_fpm_use_socket'] == 'y'){
+ $use_tcp = ';';
+ $use_socket = '';
+ if(!is_dir($socket_dir)) exec('mkdir -p '.$socket_dir);
+ } else {
+ $use_tcp = '';
+ $use_socket = ';';
+ }
+ $tpl->setVar('use_tcp', $use_tcp);
+ $tpl->setVar('use_socket', $use_socket);
- // Custom php.ini settings
- $final_php_ini_settings = array();
- $custom_php_ini_settings = trim($data['new']['custom_php_ini']);
- if($custom_php_ini_settings != ''){
- // Make sure we only have Unix linebreaks
- $custom_php_ini_settings = str_replace("\r\n", "\n", $custom_php_ini_settings);
- $custom_php_ini_settings = str_replace("\r", "\n", $custom_php_ini_settings);
- $ini_settings = explode("\n", $custom_php_ini_settings);
- if(is_array($ini_settings) && !empty($ini_settings)){
- foreach($ini_settings as $ini_setting){
- list($key, $value) = explode('=', $ini_setting);
- if($value){
- $value = escapeshellcmd(trim($value));
- $key = escapeshellcmd(trim($key));
- switch (strtolower($value)) {
- case 'on':
- case 'off':
- case '1':
- case '0':
- // PHP-FPM might complain about invalid boolean value if you use 0
- $value = 'off';
- case 'true':
- case 'false':
- case 'yes':
- case 'no':
- $final_php_ini_settings[] = array('ini_setting' => 'php_admin_flag['.$key.'] = '.$value);
- break;
- default:
- $final_php_ini_settings[] = array('ini_setting' => 'php_admin_value['.$key.'] = '.$value);
- }
+ $fpm_socket = $socket_dir.$pool_name.'.sock';
+ $tpl->setVar('fpm_socket', $fpm_socket);
+
+ $tpl->setVar('fpm_pool', $pool_name);
+ $tpl->setVar('fpm_port', $web_config['php_fpm_start_port'] + $data['new']['domain_id'] + 1);
+ $tpl->setVar('fpm_user', $data['new']['system_user']);
+ $tpl->setVar('fpm_group', $data['new']['system_group']);
+ $tpl->setVar('security_level',$web_config['security_level']);
+ $php_open_basedir = ($data['new']['php_open_basedir'] == '')?escapeshellcmd($data['new']['document_root']):escapeshellcmd($data['new']['php_open_basedir']);
+ $tpl->setVar('php_open_basedir', $php_open_basedir);
+ if($php_open_basedir != ''){
+ $tpl->setVar('enable_php_open_basedir', '');
+ } else {
+ $tpl->setVar('enable_php_open_basedir', ';');
+ }
+
+ // Custom php.ini settings
+ $final_php_ini_settings = array();
+ $custom_php_ini_settings = trim($data['new']['custom_php_ini']);
+ if($custom_php_ini_settings != ''){
+ // Make sure we only have Unix linebreaks
+ $custom_php_ini_settings = str_replace("\r\n", "\n", $custom_php_ini_settings);
+ $custom_php_ini_settings = str_replace("\r", "\n", $custom_php_ini_settings);
+ $ini_settings = explode("\n", $custom_php_ini_settings);
+ if(is_array($ini_settings) && !empty($ini_settings)){
+ foreach($ini_settings as $ini_setting){
+ list($key, $value) = explode('=', $ini_setting);
+ if($value){
+ $value = escapeshellcmd(trim($value));
+ $key = escapeshellcmd(trim($key));
+ switch (strtolower($value)) {
+ case 'on':
+ case 'off':
+ case '1':
+ case '0':
+ // PHP-FPM might complain about invalid boolean value if you use 0
+ $value = 'off';
+ case 'true':
+ case 'false':
+ case 'yes':
+ case 'no':
+ $final_php_ini_settings[] = array('ini_setting' => 'php_admin_flag['.$key.'] = '.$value);
+ break;
+ default:
+ $final_php_ini_settings[] = array('ini_setting' => 'php_admin_value['.$key.'] = '.$value);
}
- }
+ }
}
}
+ }
- $tpl->setLoop('custom_php_ini_settings', $final_php_ini_settings);
+ $tpl->setLoop('custom_php_ini_settings', $final_php_ini_settings);
- file_put_contents($pool_dir.'/'.$pool_name.'.conf',$tpl->grab());
- $app->log('Writing the PHP-FPM config file: '.$pool_dir.'/'.$pool_name.'.conf',LOGLEVEL_DEBUG);
- unset($tpl);
- //$reload = true;
- //}
+ file_put_contents($pool_dir.$pool_name.'.conf',$tpl->grab());
+ $app->log('Writing the PHP-FPM config file: '.$pool_dir.$pool_name.'.conf',LOGLEVEL_DEBUG);
+ unset($tpl);
+ //$reload = true;
+
//if($reload == true) $app->services->restartService('php-fpm','reload');
}
@@ -1163,12 +1188,13 @@ class nginx_plugin {
private function php_fpm_pool_delete ($data,$web_config) {
global $app;
- $pool_dir = $web_config['php_fpm_pool_dir'];
- $pool_name = 'web'.$data['old']['domain_id'];
+ $pool_dir = escapeshellcmd($web_config['php_fpm_pool_dir']);
+ if(substr($pool_dir,-1) != '/') $pool_dir .= '/';
+ $pool_name = 'web'.$data['new']['domain_id'];
- if ( @is_file($pool_dir.'/'.$pool_name.'.conf') ) {
- unlink($pool_dir.'/'.$pool_name.'.conf');
- $app->log('Removed PHP-FPM config file: '.$pool_dir.'/'.$pool_name.'.conf',LOGLEVEL_DEBUG);
+ if ( @is_file($pool_dir.$pool_name.'.conf') ) {
+ unlink($pool_dir.$pool_name.'.conf');
+ $app->log('Removed PHP-FPM config file: '.$pool_dir.$pool_name.'.conf',LOGLEVEL_DEBUG);
//$app->services->restartService('php-fpm','reload');
}
}