function assignVariables() { $settings = array('info' => array(), 'required' => array(), 'recommended' => array()); $safe_mode = ini_get('safe_mode'); $open_basedir = ini_get('open_basedir'); /* * Info Settings */ $settings['info']['server_software'] = $_SERVER['SERVER_SOFTWARE']; $settings['info']['server_api'] = PHP_SAPI; $settings['info']['server_os'] = PHP_OS . ' ' . php_uname('r') . ' ' . ilang('on') . ' ' . php_uname('m'); if (extension_loaded_or('apache2handler')) { $settings['info']['mod_security'] = getApacheModules('mod_security') ? ilang('on') : ilang('off'); } /* * Required Settings */ list($minimum, $recommended) = getTestValues('php_version'); $settings['recommended'][] = testIntegerMask(0, ilang('test_error_estrict'), 'error_reporting', E_STRICT, ilang('test_estrict_failed'), true, true, false); if (defined('E_DEPRECATED')) { $settings['recommended'][] = testIntegerMask(0, ilang('test_error_edeprecated'), 'error_reporting', E_DEPRECATED, ilang('test_edeprecated_failed'), true, true, false); } $settings['required'][] = testVersionRange(1, ilang('test_check_php', $minimum) . '<br />' . ilang('test_min_recommend', $minimum, $recommended), phpversion(), ilang('test_requires_php_version', phpversion(), $recommended), $minimum, $recommended, false); $settings['required'][] = testBoolean(1, ilang('test_check_md5_func'), function_exists('md5'), '', false, false, 'Function_md5_disabled'); list($minimum, $recommended) = getTestValues('gd_version'); $settings['required'][] = testGDVersion(1, ilang('test_check_gd'), $minimum, ilang('test_check_gd_failed'), 'min_GD_version'); $settings['required'][] = testFileWritable(1, ilang('test_check_write') . ' config.php', CONFIG_FILE_LOCATION, ilang('test_may_not_exist'), $this->debug); $settings['required'][] = testBoolean(1, ilang('test_check_tempnam'), function_exists('tempnam'), '', false, false, 'Function_tempnam_disabled'); $settings['required'][] = testBoolean(1, ilang('test_check_magic_quotes_runtime'), 'magic_quotes_runtime', ilang('test_check_magic_quotes_runtime_failed'), true, true, 'magic_quotes_runtime_On'); $settings['required'][] = testSupportedDatabase(1, ilang('test_check_db_drivers'), false, ilang('test_check_db_drivers_failed')); if ('1' != $safe_mode && !isset($_SESSION['allowsafemode'])) { $settings['required'][] = testCreateDirAndFile(1, ilang('test_create_dir_and_file'), ilang('info_create_dir_and_file'), $this->debug); } /* * Recommended Settings */ list($minimum, $recommended) = getTestValues('memory_limit'); $settings['recommended'][] = testRange(0, ilang('test_check_memory') . '<br />' . ilang('test_min_recommend', $minimum, $recommended), 'memory_limit', ilang('test_check_memory_failed'), $minimum, $recommended, true, true, null, 'memory_limit_range'); list($minimum, $recommended) = getTestValues('max_execution_time'); $settings['recommended'][] = testRange(0, ilang('test_check_time_limit') . '<br />' . ilang('test_min_recommend', $minimum, $recommended), 'max_execution_time', ilang('test_check_time_limit_failed'), $minimum, $recommended, true, false, 0, 'max_execution_time_range'); $settings['recommended'][] = testBoolean(0, ilang('test_check_register_globals'), 'register_globals', ilang('test_check_register_globals_failed'), true, true, 'register_globals_enabled'); $settings['recommended'][] = testInteger(0, ilang('test_check_output_buffering'), 'output_buffering', ilang('test_check_output_buffering_failed'), true, true, 'output_buffering_disabled'); $settings['recommended'][] = testString(0, ilang('test_check_disable_functions'), 'disable_functions', ilang('test_check_disable_functions_failed'), true, 'green', 'yellow', 'disable_functions_not_empty'); if (!isset($_SESSION['allowsafemode'])) { $settings['recommended'][] = testBoolean(0, ilang('test_check_safe_mode'), 'safe_mode', ilang('test_check_safe_mode_failed'), true, true, 'safe_mode_enabled'); } $settings['recommended'][] = testString(0, ilang('test_check_open_basedir'), $open_basedir, ilang('test_check_open_basedir_failed'), false, 'green', 'yellow', 'open_basedir_enabled'); if (!isset($_SESSION['skipremote'])) { $settings['recommended'][] = testRemoteFile(0, ilang('test_remote_url'), '', ilang('test_remote_url_failed'), $this->debug); } $settings['recommended'][] = testBoolean(0, ilang('test_check_file_upload'), 'file_uploads', ilang('test_check_file_failed'), true, false, 'Function_file_uploads_disabled'); list($minimum, $recommended) = getTestValues('post_max_size'); $settings['recommended'][] = testRange(0, ilang('test_check_post_max') . '<br />' . ilang('test_min_recommend', $minimum, $recommended), 'post_max_size', ilang('test_check_post_max_failed'), $minimum, $recommended, true, true, null, 'min_post_max_size'); list($minimum, $recommended) = getTestValues('upload_max_filesize'); $settings['recommended'][] = testRange(0, ilang('test_check_upload_max') . '<br />' . ilang('test_min_recommend', $minimum, $recommended), 'upload_max_filesize', ilang('test_check_upload_max_failed'), $minimum, $recommended, true, true, null, 'min_upload_max_filesize'); $f = cms_join_path(CMS_BASE, 'uploads'); $settings['recommended'][] = testDirWrite(0, ilang('test_check_writable', $f), $f, ilang('test_check_upload_failed'), 0, $this->debug); $f = cms_join_path(CMS_BASE, 'uploads' . DIRECTORY_SEPARATOR . 'images'); $settings['recommended'][] = testDirWrite(0, ilang('test_check_writable', $f), $f, ilang('test_check_images_failed'), 0, $this->debug); $f = cms_join_path(CMS_BASE, 'modules'); $settings['recommended'][] = testDirWrite(0, ilang('test_check_writable', $f), $f, ilang('test_check_modules_failed'), 0, $this->debug); $session_save_path = testSessionSavePath(''); if (empty($session_save_path)) { $settings['recommended'][] = testDummy(ilang('test_check_session_save_path'), '', 'yellow', ilang('test_empty_session_save_path'), 'session_save_path_empty', ''); } elseif (!empty($open_basedir)) { $settings['recommended'][] = testDummy(ilang('test_check_session_save_path'), '', 'yellow', ilang('test_open_basedir_session_save_path'), 'No_check_session_save_path_with_open_basedir', ''); } else { $settings['recommended'][] = testDirWrite(0, ilang('test_check_session_save_path'), $session_save_path, ilang('test_check_session_save_path_failed', $session_save_path), 1, $this->debug); } $settings['recommended'][] = testBoolean(0, 'session.use_cookies', 'session.use_cookies', ilang('session_use_cookies')); $settings['recommended'][] = testBoolean(0, ilang('test_check_xml_func'), extension_loaded_or('xml'), ilang('test_check_xml_failed'), false, false, 'Function_xml_disabled'); $settings['recommended'][] = testBoolean(0, ilang('test_xmlreader_class'), class_exists('XMLReader', false), ilang('test_xmlreader_failed'), false, false, 'class_xmlreader_unavailable'); $settings['recommended'][] = testBoolean(0, ilang('test_check_file_get_contents'), function_exists('file_get_contents'), ilang('test_check_file_get_contents_failed'), false, false, 'Function_file_get_content_disabled'); # $settings['recommended'][] = # testBoolean(0, ilang('test_check_magic_quotes_gpc'), # 'magic_quotes_gpc', ilang('test_check_magic_quotes_gpc_failed'), true, true, 'magic_quotes_gpc_On'); $_log_errors_max_len = ini_get('log_errors_max_len') ? ini_get('log_errors_max_len') . '0' : '99'; ini_set('log_errors_max_len', $_log_errors_max_len); $result = ini_get('log_errors_max_len') == $_log_errors_max_len; $settings['recommended'][] = testBoolean(0, ilang('test_check_ini_set'), $result, ilang('test_check_ini_set_failed'), false, false, 'ini_set_disabled'); // assign settings list($this->continueon, $this->special_failed) = testGlobal(array(true, false), true); $this->smarty->assign('settings', $settings); $this->smarty->assign('special_failed', $this->special_failed); if (isset($_SESSION['advanceduser'])) { $this->smarty->assign('continueon', true); } else { $this->smarty->assign('continueon', $this->continueon); } $this->smarty->assign('phpinfo', getEmbedPhpInfo(INFO_CONFIGURATION | INFO_MODULES)); $this->smarty->assign('errors', $this->errors); }
/** * @return object * @param string $inputname */ function &testFileUploads($inputname) { global $lang_fn; $_errors = array(UPLOAD_ERR_INI_SIZE => $lang_fn('upload_err_ini_size'), UPLOAD_ERR_FORM_SIZE => $lang_fn('upload_err_form_size'), UPLOAD_ERR_PARTIAL => $lang_fn('upload_err_partial'), UPLOAD_ERR_NO_FILE => $lang_fn('upload_err_no_file'), UPLOAD_ERR_NO_TMP_DIR => $lang_fn('upload_err_no_tmp_dir'), UPLOAD_ERR_CANT_WRITE => $lang_fn('upload_err_cant_write'), UPLOAD_ERR_EXTENSION => $lang_fn('upload_err_extension')); function orderFiles(&$file_upl) { $_ary = array(); $_count = count($file_upl['name']); $_keys = array_keys($file_upl); for ($i = 0; $i < $_count; $i++) { foreach ($_keys as $key) { $_ary[$i][$key] = $file_upl[$key][$i]; } } return $_ary; } $test = new CmsInstallTest(); $test->files = array(); $result = testBoolean('', '', 'file_uploads', '', true, false); if ($result->res != 'green') { $test->res = 'red'; getTestReturn($test, '', '', 'Function_file_uploads_disabled', $lang_fn('function_file_uploads_off')); return $test; } if (!isset($_FILES["{$inputname}"])) { $test->res = 'red'; getTestReturn($test, '', '', '', $lang_fn('error_nofileuploaded')); return $test; } $_files = array(); if (is_array($_FILES["{$inputname}"]['name'])) { $_files = orderFiles($_FILES["{$inputname}"]); } else { $_files[] = $_FILES["{$inputname}"]; } foreach ($_files as $i => $_file) { $_data = $_file; if (!is_uploaded_file($_file['tmp_name']) || $_file['error'] !== UPLOAD_ERR_OK) { if (isset($_errors[$_file['error']])) { $_data['error_string'] = $_errors[$_file['error']]; } elseif ($_file['size'] == 0) { $_data['error_string'] = $lang_fn('upload_err_empty'); } elseif (!is_readable($_file['tmp_name'])) { $_data['error_string'] = $lang_fn('upload_file_no_readable'); } else { $_data['error_string'] = $lang_fn('upload_err_unknown'); } } $test->files["{$i}"] = $_data; } return $test; }
/** * @return object * @var string $inputname */ function &testFileUploads($inputname) { $_errors = array(UPLOAD_ERR_INI_SIZE => lang('upload_err_ini_size'), UPLOAD_ERR_FORM_SIZE => lang('upload_err_form_size'), UPLOAD_ERR_PARTIAL => lang('upload_err_partial'), UPLOAD_ERR_NO_FILE => lang('upload_err_no_file'), UPLOAD_ERR_NO_TMP_DIR => lang('upload_err_no_tmp_dir'), UPLOAD_ERR_CANT_WRITE => lang('upload_err_cant_write'), UPLOAD_ERR_EXTENSION => lang('upload_err_extension')); function orderFiles(&$file_upl) { $_ary = array(); $_count = count($file_upl['name']); $_keys = array_keys($file_upl); for ($i = 0; $i < $_count; $i++) { foreach ($_keys as $key) { $_ary[$i][$key] = $file_upl[$key][$i]; } } return $_ary; } $test =& new StdClass(); $test->files = array(); $_file_uploads = testBoolean(0, '', 'file_uploads', '', true, false); if ($_file_uploads->value == 'Off') { $test->error = lang('function_file_uploads_off'); return $test; } if (!isset($_FILES['cksumdat'])) { $test->error = lang('error_nofileuploaded'); return $test; } $_files = array(); if (is_array($_FILES["{$inputname}"]['name'])) { $_files = orderFiles($_FILES["{$inputname}"]); } else { $_files[] = $_FILES["{$inputname}"]; } foreach ($_files as $i => $_file) { $_data = $_file; if (!is_uploaded_file($_file['tmp_name']) || $_file['error'] !== UPLOAD_ERR_OK) { if (isset($_errors[$_file['error']])) { $_data['error_string'] = $_errors[$_file['error']]; } elseif ($_file['size'] == 0) { $_data['error_string'] = lang('upload_err_empty'); } elseif (!is_readable($_file['tmp_name'])) { $_data['error_string'] = lang('upload_file_no_readable'); } else { $_data['error_string'] = lang('upload_err_unknown'); } } $test->files["{$i}"] = $_data; } return $test; }
$session_save_path = testSessionSavePath(''); if (empty($session_save_path)) { $tmp[0]['session_save_path'] = testDummy('session_save_path', lang('os_session_save_path'), 'yellow', '', 'session_save_path_empty', ''); } elseif (!empty($open_basedir)) { $tmp[0]['session_save_path'] = testDummy('session_save_path', lang('open_basedir_active'), 'yellow', '', 'No_check_session_save_path_with_open_basedir', ''); } else { $tmp[0]['session_save_path'] = testDirWrite(0, lang('session_save_path'), $session_save_path, $session_save_path, 1); } $tmp[0]['session_use_cookies'] = testBoolean(0, 'session.use_cookies', 'session.use_cookies'); $tmp[0]['xml_function'] = testBoolean(1, 'xml_function', extension_loaded_or('xml'), '', false, false, 'Function_xml_disabled'); $tmp[0]['xmlreader_class'] = testBoolean(1, 'xmlreader_class', class_exists('XMLReader', false), '', false, false, 'class_xmlreader_unavailable'); #$tmp[1]['file_get_contents'] = testBoolean(0, 'file_get_contents', function_exists('file_get_contents'), '', false, false, 'Function_file_get_content_disabled'); $_log_errors_max_len = ini_get('log_errors_max_len') ? ini_get('log_errors_max_len') . '0' : '99'; ini_set('log_errors_max_len', $_log_errors_max_len); $result = ini_get('log_errors_max_len') == $_log_errors_max_len; $tmp[1]['check_ini_set'] = testBoolean(0, 'check_ini_set', $result, lang('check_ini_set_off'), false, false, 'ini_set_disabled'); $hascurl = 0; $curlgood = 0; $curl_version = ''; $min_curlversion = '7.19.7'; if (in_array('curl', get_loaded_extensions())) { $hascurl = 1; if (function_exists('curl_version')) { $t = curl_version(); if (isset($t['version'])) { $curl_version = $t['version']; if (version_compare($t['version'], $min_curlversion) >= 0) { $curlgood = 1; } } }
function testBoolean($testNo, $a, $b) { if ($a != $b) { echo "Неправильный ответ на тесте {$testNo}<br><br>"; } else { echo "Test {$testNo} OK!<br>"; } } testBoolean(1, compare(" 1 2 3 ", "1 2 3"), true); testBoolean(2, compare(" 1 2\n\n\n3\n", " 1 2 3"), true); testBoolean(3, compare(" 123 234 35", "123\n234 35\n"), true); testBoolean(4, compare(" 1 2 3 ", "1 22 3"), false); testBoolean(5, compare(" denis xxx 2 3 ", "\ndenis\nxxx\n 2 \n 3 \n"), true); testBoolean(6, compare("123", "1 2 3"), false); testBoolean(7, compare(" ", " 1 "), false); testBoolean(8, compare(" 1 \n\n\n\n\t\t\t\t ", " 1"), true); testBoolean(9, compare(" \n\n\n\n\t\t\t\t ", " \t\n "), true); testBoolean(10, compare("", " 1 "), false); $t1 = get_MT(); $s1 = ""; for ($i = 0; $i < 10000; $i++) { $s1[$i] = " "; } $s2 = ""; for ($i = 0; $i < 10000; $i++) { $s2[$i] = "\n"; } $t2 = get_MT(); echo "Время генерации: " . ($t2 - $t1) . "<br>"; testBoolean(11, compare($s1, $s2), true); echo "Время сравнения: " . (get_MT() - $t2) . "<br>";