⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 config.php

📁 php-4.4.7学习linux时下载的源代码
💻 PHP
📖 第 1 页 / 共 5 页
字号:
        if (empty($this->files[$layer])) {            return $this->raiseError("unknown config layer `$layer'");        }        if ($file === null) {            $file = $this->files[$layer];        }        $data = $this->_readConfigDataFrom($file);        if (PEAR::isError($data)) {            if ($strict) {                $this->_errorsFound++;                $this->lastError = $data;                return $data;            } else {                return true;            }        }        $this->_decodeInput($data);        if ($override) {            $this->configuration[$layer] =                PEAR_Config::arrayMergeRecursive($this->configuration[$layer], $data);        } else {            $this->configuration[$layer] =                PEAR_Config::arrayMergeRecursive($data, $this->configuration[$layer]);        }        $this->_setupChannels();        if (!$this->_noRegistry && ($phpdir = $this->get('php_dir', $layer, 'pear.php.net'))) {            $this->_registry[$layer] = &new PEAR_Registry($phpdir);            $this->_registry[$layer]->setConfig($this);            $this->_regInitialized[$layer] = false;        } else {            unset($this->_registry[$layer]);        }        return true;    }    // }}}    // {{{ arrayMergeRecursive($arr2, $arr1)    /**     * @param array     * @param array     * @return array     * @static     */    function arrayMergeRecursive($arr2, $arr1)    {        $ret = array();        foreach ($arr2 as $key => $data) {            if (!isset($arr1[$key])) {                $ret[$key] = $data;                unset($arr1[$key]);                continue;            }            if (is_array($data)) {                if (!is_array($arr1[$key])) {                    $ret[$key] = $arr1[$key];                    unset($arr1[$key]);                    continue;                }                $ret[$key] = PEAR_Config::arrayMergeRecursive($arr1[$key], $arr2[$key]);                unset($arr1[$key]);            }        }        return array_merge($ret, $arr1);    }    // }}}    // {{{ writeConfigFile([file], [layer])    /**     * Writes data into a config layer from a file.     *     * @param string|null file to read from, or null for default     * @param string config layer to insert data into ('user' or     *               'system')     * @param string|null data to write to config file or null for internal data [DEPRECATED]     * @return bool TRUE on success or a PEAR error on failure     */    function writeConfigFile($file = null, $layer = 'user', $data = null)    {        $this->_lazyChannelSetup($layer);        if ($layer == 'both' || $layer == 'all') {            foreach ($this->files as $type => $file) {                $err = $this->writeConfigFile($file, $type, $data);                if (PEAR::isError($err)) {                    return $err;                }            }            return true;        }        if (empty($this->files[$layer])) {            return $this->raiseError("unknown config file type `$layer'");        }        if ($file === null) {            $file = $this->files[$layer];        }        $data = ($data === null) ? $this->configuration[$layer] : $data;        $this->_encodeOutput($data);        $opt = array('-p', dirname($file));        if (!@System::mkDir($opt)) {            return $this->raiseError("could not create directory: " . dirname($file));        }        if (@is_file($file) && !@is_writeable($file)) {            return $this->raiseError("no write access to $file!");        }        $fp = @fopen($file, "w");        if (!$fp) {            return $this->raiseError("PEAR_Config::writeConfigFile fopen('$file','w') failed");        }        $contents = "#PEAR_Config 0.9\n" . serialize($data);        if (!@fwrite($fp, $contents)) {            return $this->raiseError("PEAR_Config::writeConfigFile: fwrite failed");        }        return true;    }    // }}}    // {{{ _readConfigDataFrom(file)    /**     * Reads configuration data from a file and returns the parsed data     * in an array.     *     * @param string file to read from     *     * @return array configuration data or a PEAR error on failure     *     * @access private     */    function _readConfigDataFrom($file)    {        $fp = @fopen($file, "r");        if (!$fp) {            return $this->raiseError("PEAR_Config::readConfigFile fopen('$file','r') failed");        }        $size = filesize($file);        $rt = get_magic_quotes_runtime();        set_magic_quotes_runtime(0);        if (function_exists('file_get_contents')) {            fclose($fp);            $contents = file_get_contents($file);        } else {            $contents = @fread($fp, $size);            fclose($fp);        }        if (empty($contents)) {            return $this->raiseError('Configuration file "' . $file . '" is empty');        }                set_magic_quotes_runtime($rt);        $version = false;        if (preg_match('/^#PEAR_Config\s+(\S+)\s+/si', $contents, $matches)) {            $version = $matches[1];            $contents = substr($contents, strlen($matches[0]));        } else {            // Museum config file            if (substr($contents,0,2) == 'a:') {                $version = '0.1';            }        }        if ($version && version_compare("$version", '1', '<')) {            // no '@', it is possible that unserialize            // raises a notice but it seems to block IO to            // STDOUT if a '@' is used and a notice is raise            $data = unserialize($contents);            if (!is_array($data) && !$data) {                if ($contents == serialize(false)) {                    $data = array();                } else {                    $err = $this->raiseError("PEAR_Config: bad data in $file");                    return $err;                }            }            if (!is_array($data)) {                if (strlen(trim($contents)) > 0) {                    $error = "PEAR_Config: bad data in $file";                    $err = $this->raiseError($error);                    return $err;                } else {                    $data = array();                }            }        // add parsing of newer formats here...        } else {            $err = $this->raiseError("$file: unknown version `$version'");            return $err;         }        return $data;    }    // }}}    // {{{ getConfFile(layer)    /**    * Gets the file used for storing the config for a layer    *    * @param string $layer 'user' or 'system'    */    function getConfFile($layer)    {        return $this->files[$layer];    }    // }}}    /**     * @param array information on a role as parsed from its xml file     * @return true|PEAR_Error     * @access private     */    function _addConfigVars($vars)    {        if (count($vars) > 3) {            return $this->raiseError('Roles can only define 3 new config variables or less');        }        foreach ($vars as $name => $var) {            if (!is_array($var)) {                return $this->raiseError('Configuration information must be an array');            }            if (!isset($var['type'])) {                return $this->raiseError('Configuration information must contain a type');            } else {                if (!in_array($var['type'],                      array('string', 'mask', 'password', 'directory', 'file', 'set'))) {                    return $this->raiseError(                        'Configuration type must be one of directory, file, string, ' .                        'mask, set, or password');                }            }            if (!isset($var['default'])) {                return $this->raiseError(                    'Configuration information must contain a default value ("default" index)');            } else {                if (is_array($var['default'])) {                    $real_default = '';                    foreach ($var['default'] as $config_var => $val) {                        if (strpos($config_var, 'text') === 0) {                            $real_default .= $val;                        } elseif (strpos($config_var, 'constant') === 0) {                            if (defined($val)) {                                $real_default .= constant($val);                            } else {                                return $this->raiseError(                                    'Unknown constant "' . $val . '" requested in ' .                                    'default value for configuration variable "' .                                    $name . '"');                            }                        } elseif (isset($this->configuration_info[$config_var])) {                            $real_default .=                                $this->configuration_info[$config_var]['default'];                        } else {                            return $this->raiseError(                                'Unknown request for "' . $config_var . '" value in ' .                                'default value for configuration variable "' .                                $name . '"');                        }                    }                    $var['default'] = $real_default;                }                if ($var['type'] == 'integer') {                    $var['default'] = (integer) $var['default'];                }            }            if (!isset($var['doc'])) {                return $this->raiseError(                    'Configuration information must contain a summary ("doc" index)');            }            if (!isset($var['prompt'])) {                return $this->raiseError(                    'Configuration information must contain a simple prompt ("prompt" index)');            }            if (!isset($var['group'])) {                return $this->raiseError(                    'Configuration information must contain a simple group ("group" index)');            }            if (isset($this->configuration_info[$name])) {                return $this->raiseError('Configuration variable "' . $name .                    '" already exists');            }            $this->configuration_info[$name] = $var;        }        return true;    }    // {{{ _encodeOutput(&data)    /**     * Encodes/scrambles configuration data before writing to files.     * Currently, 'password' values will be base64-encoded as to avoid     * that people spot cleartext passwords by accident.     *     * @param array (reference) array to encode values in     *     * @return bool TRUE on success     *     * @access private     */    function _encodeOutput(&$data)    {        foreach ($data as $key => $value) {            if ($key == '__channels') {                foreach ($data['__channels'] as $channel => $blah) {                    $this->_encodeOutput($data['__channels'][$channel]);                }            }            if (!isset($this->configuration_info[$key])) {                continue;            }            $type = $this->configuration_info[$key]['type'];            switch ($type) {                // we base64-encode passwords so they are at least                // not shown in plain by accident                case 'password': {                    $data[$key] = base64_encode($data[$key]);                    break;                }                case 'mask': {                    $data[$key] = octdec($data[$key]);                    break;                }            }        }        return true;    }    // }}}    // {{{ _decodeInput(&data)    /**     * Decodes/unscrambles configuration data after reading from files.     *     * @param array (reference) array to encode values in     *     * @return bool TRUE on success     *     * @access private     *     * @see PEAR_Config::_encodeOutput     */    function _decodeInput(&$data)    {        if (!is_array($data)) {            return true;        }        foreach ($data as $key => $value) {            if ($key == '__channels') {                foreach ($data['__channels'] as $channel => $blah) {                    $this->_decodeInput($data['__channels'][$channel]);                }            }            if (!isset($this->configuration_info[$key])) {                continue;            }            $type = $this->configuration_info[$key]['type'];            switch ($type) {                case 'password': {                    $data[$key] = base64_decode($data[$key]);                    break;                }                case 'mask': {                    $data[$key] = decoct($data[$key]);                    break;                }            }        }        return true;    }    // }}}    // {{{ getDefaultChannel([layer])    /**     * Retrieve the default channel.     *     * On startup, channels are not initialized, so if the default channel is not     * pear.php.net, then initialize the config.     * @param string registry layer     * @return string|false     */    function getDefaultChannel($layer = null)    {        $ret = false;        if ($layer === null) {            foreach ($this->layers as $layer) {                if (isset($this->configuration[$layer]['default_channel'])) {                    $ret = $this->configuration[$layer]['default_channel'];                    break;                }            }        } elseif (isset($this->configuration[$layer]['default_channel'])) {            $ret = $this->configuration[$layer]['default_channel'];        }        if ($ret == 'pear.php.net' && defined('PEAR_RUNTYPE') && PEAR_RUNTYPE == 'pecl') {            $ret = 'pecl.php.net';        }        if ($ret) {            if ($ret != 'pear.php.net') {                $this->_lazyChannelSetup();            }            return $ret;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -