Exemple #1
0
/**
 * 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');
}