/** * Update PHP configuration options * * @throws iMSCP_Exception * @param iMSCP_PHPini $phpini PHP editor instance * @param string $configLevel PHP configuration level * @çeturn void */ function updatePhpConfig($phpini, $configLevel) { global $phpini, $configLevel; if (!isset($_POST['domain_id']) || !isset($_POST['domain_type'])) { showBadRequestErrorPage(); } $dmnId = intval($_POST['domain_id']); $dmnType = clean_input($_POST['domain_type']); if ($configLevel == 'per_user' && $dmnType != 'dmn' || $configLevel == 'per_domain' && !in_array($dmnType, array('dmn', 'als'))) { showBadRequestErrorPage(); } if (!isDomainStatusOk($dmnId, $dmnType)) { set_page_message(tr('Domain status is not ok.'), 'error'); return; } $phpini->loadDomainIni($_SESSION['user_id'], $dmnId, $dmnType); $oldData = $phpini->getDomainIni(); if (isset($_POST['allow_url_fopen'])) { $phpini->setDomainIni('phpiniAllowUrlFopen', clean_input($_POST['allow_url_fopen'])); } if (isset($_POST['display_errors'])) { $phpini->setDomainIni('phpiniDisplayErrors', clean_input($_POST['display_errors'])); } if (isset($_POST['error_reporting'])) { $phpini->setDomainIni('phpiniErrorReporting', clean_input($_POST['error_reporting'])); } if ($phpini->getClientPermission('phpiniDisableFunctions') == 'yes') { $disabledFunctions = array(); foreach (array('show_source', 'system', 'shell_exec', 'shell_exec', 'passthru', 'exec', 'phpinfo', 'shell', 'symlink', 'proc_open', 'popen') as $function) { if (isset($_POST[$function])) { $disabledFunctions[] = $function; } } if (isset($_POST['mail']) && $phpini->clientHasPermission('phpiniMailFunction') || !$phpini->clientHasPermission('phpiniMailFunction')) { $disabledFunctions[] = 'mail'; } $phpini->setDomainIni('phpiniDisableFunctions', $phpini->assembleDisableFunctions($disabledFunctions)); } elseif ($phpini->getClientPermission('phpiniDisableFunctions') == 'exec') { $disabledFunctions = explode(',', $phpini->getDomainIni('phpiniDisableFunctions')); if (isset($_POST['exec']) && $_POST['exec'] == 'yes') { $disabledFunctions = array_diff($disabledFunctions, array('exec')); } elseif (!in_array('exec', $disabledFunctions, true)) { $disabledFunctions[] = 'exec'; } $phpini->setDomainIni('phpiniDisableFunctions', $phpini->assembleDisableFunctions($disabledFunctions)); } if ($phpini->getDomainIni() == $oldData) { set_page_message(tr('Nothing has been changed.'), 'info'); redirectTo('domains_manage.php'); } $phpini->saveDomainIni($_SESSION['user_id'], $dmnId, $dmnType); $phpini->updateDomainStatuses($configLevel, $_SESSION['user_id'], $dmnId, $dmnType); send_request(); set_page_message(tr('PHP configuration scheduled for update.'), 'success'); redirectTo('domains_manage.php'); }