self::_getConfigSetting('sendmail_path'), 'safeMode' => self::_getConfigSetting('safe_mode', true), 'magicQuotesGpc' => get_magic_quotes_gpc(), 'disabledPhpFunctions' => str_replace( ',', ', ', self::_getConfigSetting('disable_functions') ), 'maxExecutionTime' => self::_getMaxExecutionTime(), 'uploadMaxFilesize' => self::_getUploadMaxFilesize(), 'phpextensions' => implode(', ', get_loaded_extensions()), 'phpRam' => $phpRam, 'memoryLimit' => round($phpRam * 1024 * 1024 * 0.9, 0), 'compression' => self::_hasZlib(), ); return new Zend_Config($dynConfig, true); } /** * Read PHP's max_execution_time * * @return int */ private static function _getMaxExecutionTime() { $maxExecutionTime = self::_getConfigSetting('max_execution_time', true); if ($maxExecutionTime <= 5) { // we didn't get the real value from the server - some deliver "-1" $maxExecutionTime = 30; } elseif ($maxExecutionTime > 30) { // we don't use more than 30 seconds to avoid brower timeouts $maxExecutionTime = 30; } return $maxExecutionTime; } /** * Get PHP's upload_max_filesize * * @return int */ private static function _getUploadMaxFilesize() { $uploadMaxFilesize = self::_getConfigSetting('upload_max_filesize'); // Is value in Megabytes? If yes create output if (strpos($uploadMaxFilesize, 'M')) { $uploadMaxFilesize = str_replace('M', '', $uploadMaxFilesize); $uploadMaxFilesize = trim($uploadMaxFilesize); // re-calculate to Bytes $uploadMaxFilesize *= 1024 * 1024; } return (int) $uploadMaxFilesize;; } /** * Get PHP's ram size * * @return integer The memory limit in MB */ private static function _getPhpRam() { $ram = self::_getConfigSetting('memory_limit'); // we don't trust the value delivered by server config if < 16 if ($ram < 16) { $ram = 16; } return $ram; } /** * Detect if zlib is installed * * @return boolean */ private static function _hasZlib() { $zlib = false; $extensions = get_loaded_extensions(); if (in_array('zlib', $extensions)) { $zlib = true; }; return (boolean) $zlib; } /** * Returns a PHP-Setting from ini * * First try to read via ini_get(), then fall back to get_cfg_var() * * @param string $varName The name of the setting to read * @param boolean $returnAsInt Whether to return value as integer */ private function _getConfigSetting($varName, $returnAsInt = false) { $value = @ini_get($varName); // fallback if ini_get doesn't work if ($value == '' || $value === null) { $value = @get_cfg_var($varName); } if ($returnAsInt) { $value = (int) $value; } return $value; } }