IP.Board Requirements Checker

You are running PHP {$version}

"; //----------------------------------------- // Check for zend guard //----------------------------------------- $hasZend = false; if ( function_exists( 'zend_loader_enabled' ) ) { if ( @zend_loader_enabled() === true ) { $hasZend = true; } } flushOutput( "Только для IP.Nexus: Проверка обработки скриптов, закодированных Zend Guard...", $hasZend, "Ваш сервер не может обрабатывать закодированные скрипты IP.Nexus. Это не влияет на IP.Board, IP.Downloads. IP.Blog, IP.Gallery, IP.Content, IP.Chat" ); //----------------------------------------- // Memory limit //----------------------------------------- $_memLimit = null; $_recLimit = 128; if( @ini_get('memory_limit') ) { $_memLimit = @ini_get('memory_limit'); } if( $_memLimit ) { $_intLimit = $_memLimit; $_intRec = $_recLimit * 1024 * 1024; preg_match( "#^(\d+)(\w+)$#", strtolower($_intLimit), $match ); if( $match[2] == 'g' ) { $_intLimit = intval( $_intLimit ) * 1024 * 1024 * 1024; } else if ( $match[2] == 'm' ) { $_intLimit = intval( $_intLimit ) * 1024 * 1024; } else if ( $match[2] == 'k' ) { $_intLimit = intval( $_intLimit ) * 1024; } else { $_intLimit = intval( $_intLimit ); } if( $_intLimit >= $_intRec ) { flushOutput( "Проверка выделения памяти ({$_recLimit}M или больше рекомендуется)...", true, "Ваш сервер ограничивает объем выделяемой памяти(memory_limit): {$_memLimit}" ); } else { flushOutput( "Проверка выделения памяти ({$_recLimit}M или больше рекомендуется)...", 2, "Ваш сервер ограничивает объем выделяемой памяти(memory_limit): {$_memLimit}. Вы можете использовать IP.Board, но свяжитесь с вашим хостинг-провайдером и попросите его увеличить memory_limit до {$_recLimit}M, чтобы избежать ошибок в будущем. Возможно прекращение работы скриптов при обработке больших объемов данных" ); } } else { flushOutput( "Проверка выделения памяти ({$_recLimit}M или больше рекомендуется)...", 2, "Не удалось получить значение переменной memory_limit" ); } //----------------------------------------- // Checking for SPL //----------------------------------------- $splExists = in_array( 'SPL', $extensions ); flushOutput( "Проверка SPL...", $splExists, "IP.Board " . IPB_VERSION . " требуется расширение PHP SPL. Пожалуйста, свяжитесь с вашим хостинг-провайдером для установки библиотеки SPL." ); //----------------------------------------- // Checking for DOM XML //----------------------------------------- $domXML = in_array( 'dom', $extensions ); flushOutput( "Проверка обработки DOM XML...", $domXML, "IP.Board " . IPB_VERSION . " требуется расширение обработчика DOM XML. Пожалуйста, свяжитесь с вашим хостинг-провайдером для установки библиотеки libxml2." ); //----------------------------------------- // Check for GD2 //----------------------------------------- $gd2 = in_array( 'gd', $extensions ); flushOutput( "Проверка библиотеки GD...", $gd2, "IP.Board " . IPB_VERSION . " требуется библиотека GD2. Пожалуйста, свяжитесь с вашим хостинг-провайдером для установки библиотеки libgd." ); if( function_exists( 'gd_info' ) ) { $gdInfo = gd_info(); $fail = true; if( $gdInfo["GD Version"] ) { preg_match( "/.*?([\d\.]+).*?/", $gdInfo["GD Version"], $matches ); if( $matches[1] ) { $compareVersions = version_compare( '2.0', $matches[1], '<=' ); if( !$compareVersions ) { $fail = 2; } } } flushOutput( "Проверка GD2...", $fail, "Библиотека GD установлена, но IP.Board " . IPB_VERSION . " требуется библиотека GD версии 2. Версия переданная вашим сервером '{$gdInfo['GD Version']}'. Пожалуйста убедитесь, что используете GD версии 2, и обновите библиотеку libgd при необходимости." ); } //----------------------------------------- // Checking for mysql extension //----------------------------------------- $mysql = in_array( 'mysql', $extensions ); $mysqli = in_array( 'mysqli', $extensions ); flushOutput( "Проверка mysql...", ( $mysql OR $mysqli ), "Ваш сервер не имеет библиотеки mysql, попросите хостера установить поддержку mysqli." ); if( $mysql AND !$mysqli ) { flushOutput( "Проверка поддержки mysqli...", false, "Расширение mysqli рекомендуется вместо стандартного интерфейса mysql. Форум может обойтись и без него, но, если возможно, установите его для улучшения скорости и безопасности работы." ); } //----------------------------------------- // Checking for JSON //----------------------------------------- $json = in_array( 'json', $extensions ); flushOutput( "Проверка JSON...", $json, "Расширение PHP JSON необходимо для функционирования форума. Узнайте как установить расширение json." ); //----------------------------------------- // Checking for openSSL //----------------------------------------- $openssl = in_array( 'openssl', $extensions ) ? true : 2; flushOutput( "Проверка openSSL...", $openssl, "OpenSSL необходим для модулей связи с Facebook, Twitter, и модуля Subscription Manager. Если вы не используете ни один из этих модулей, то можно обойтись без этого расширения, иначе вам необходимо установить расширение openssl." ); //----------------------------------------- // Suhosin //----------------------------------------- if( extension_loaded( 'suhosin' ) ) { $_postMaxVars = @ini_get('suhosin.post.max_vars'); $_reqMaxVars = @ini_get('suhosin.request.max_vars'); $_getMaxLen = @ini_get('suhosin.get.max_value_length'); $_postMaxLen = @ini_get('suhosin.post.max_value_length'); $_reqMaxLen = @ini_get('suhosin.request.max_value_length'); $_reqMaxVar = @ini_get('suhosin.request.max_varname_length'); $_indPMV = $_postMaxVars < 4096 ? 2 : true; $_indRMV = $_reqMaxVars < 4096 ? 2 : true; $_indGML = $_getMaxLen < 2000 ? 2 : true; $_indPML = $_postMaxLen < 1000000 ? 2 : true; $_indRML = $_reqMaxLen < 1000000 ? 2 : true; $_indRMVL = $_reqMaxVar < 350 ? 2 : true; flushOutput( "suhosin.post.max_vars (4096 or better recommended)...", $_indPMV, "Your value: {$_postMaxVars}. Can prevent some forms (especially in the ACP) from saving properly." ); flushOutput( "suhosin.request.max_vars (4096 or better recommended)...", $_indRMV, "Your value: {$_reqMaxVars}. Can prevent some forms (especially in the ACP) from saving properly." ); flushOutput( "suhosin.get.max_value_length (2000 or better recommended)...", $_indGML, "Your value: {$_postMaxLen}. Can prevent very long URLs from loading correctly." ); flushOutput( "suhosin.post.max_value_length (1000000 or better recommended)...", $_indPML, "Your value: {$_postMaxLen}. Can prevent very large posts or other form submissions from saving properly." ); flushOutput( "suhosin.request.max_value_length (1000000 or better recommended)...", $_indRML, "Your value: {$_reqMaxLen}. Can prevent very large posts or other form submissions from saving properly." ); flushOutput( "suhosin.request.max_varname_length (350 or better recommended)...", $_indRMVL, "Your value: {$_reqMaxVar}. Can prevent long friendly URLs from loading correctly." ); } $testtext="тестовый текст в кодировке utf-8"; $pcre=($testtext == preg_replace( '/(^|\W)дир(\W|$)/iu', "\\1замена\\2", $testtext ))?true:false; flushOutput( "Проверка расширения PCRE на правильную работу со строками в формате UTF-8...", $pcre, "Библиотека PCRE неправильно обрабатывает регулярные выражения в кодировке UTF-8, обратитесь к хостинг-провайдеру для исправления этой ошибки. Неправильная работа этой функции может привести к ошикам при работе с русскими именами пользователей, ошибкам фильтра нецензурных слов и т.д." ); flushOutput( 'Проверка функции filter_var()...', function_exists ( 'filter_var' ), 'Функция отсутствует, это может привести к фатальным ошибкам php и остановке выполнения скриптов' ); //----------------------------------------- // Flush output function //----------------------------------------- function flushOutput( $checking, $result, $errorText ) { print "

" . $checking; if( $result === 2 ) { print "ВНИМАНИЕ
{$errorText}"; } else if( !$result ) { print "ОШИБКА
{$errorText}"; } else { print "ОК"; } print "

"; flush(); @ob_flush(); return true; } ?>

Имейте в виду, что MySQL версии 4.1 или выше (MySQL 5.0 рекомендуется) необходим IP.Board . Попросите администратора вашего сервера проверить версию MySQL если не уверены.