function test_server_req(&$score) { $rst = version_compare(PHP_VERSION, '5.0', '>='); $items['PHP5以上'] = array('value' => PHP_VERSION, 'result' => $rst); if (!$rst) { $allow_install = false; } $rst = !get_cfg_var('zend.ze1_compatibility_mode'); $items['zend.ze1_compatibility_mode 关闭'] = array('value' => $rst ? 'Off' : 'On', 'result' => $rst); if (!$rst) { $allow_install = false; } $tmpfname = tempnam("../home/cache", "foo"); $handle = fopen($tmpfname, "w"); $rst = flock($handle, LOCK_EX); fclose($handle); unlink($tmpfname); $items['支持文件锁(flock)'] = array('value' => $rst ? '支持' : '不支持', 'result' => $rst); if (!$rst) { $allow_install = false; } $rst = function_exists('xml_parse_into_struct'); $items['php可以解析xml文件'] = array('value' => $rst ? '支持' : '不支持', 'result' => $rst); if (!$rst) { $allow_install = false; } $rst = function_exists('mysql_connect') && function_exists('mysql_get_server_info'); $items['MySQL函数库可用'] = array('value' => $rst ? mysql_get_client_info() : '未安装', 'result' => $rst); if (!$rst) { $allow_install = false; } else { $rst = false; if (defined('DB_HOST')) { if (defined('DB_PASSWORD')) { $rs = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD); } elseif (defined('DB_USER')) { $rs = mysql_connect(DB_HOST, DB_USER); } else { $rs = mysql_connect(DB_HOST); } $db_ver = mysql_get_server_info($rs); } elseif ($db_ver = mysql_get_server_info()) { define('DB_HOST', ''); } else { $sock = get_cfg_var('mysql.default_socket'); if (PHP_OS != 'WINNT' && file_exists($sock) && is_writable($sock)) { define('DB_HOST', $sock); } else { $host = ini_get('mysql.default_host'); $port = ini_get('mysql.default_port'); if (!$host) { $host = '127.0.0.1'; } if (!$port) { $port = 3306; } define('DB_HOST', $host . ':' . $port); } } if (!$db_ver) { if (substr(DB_HOST, 0, 1) == '/') { $fp = @fsockopen("unix://" . DB_HOST); } else { if ($p = strrpos(DB_HOST, ':')) { $port = substr(DB_HOST, $p + 1); $host = substr(DB_HOST, 0, $p); } else { $port = 3306; $host = DB_HOST; } $fp = @fsockopen("tcp://" . $host, $port, $errno, $errstr, 2); } if (!$fp) { $db_ver = '无法连接'; } else { fwrite($fp, "\n"); $db_ver = fread($fp, 20); fclose($fp); if (preg_match('/([2-8]\\.[0-9\\.]+)/', $db_ver, $match)) { $db_ver = $match[1]; $rst = version_compare($db_ver, '4.0', '>='); } else { $db_ver = '无法识别'; } } } else { $rst = version_compare($db_ver, '4.1', '>='); } $this->db_ver = $db_ver; $mysql_key = '数据库Mysql 4.1以上 <i style="color:#060">' . DB_HOST . '</i>'; if ($this->allow_change_db) { $mysql_key .= '<form method="get" action="" style="margin:0;padding:0"><table><tr><td><label for="db_host">MySQL主机</label></td><td> </td></tr><tr><td><input id="db_host" value="' . DB_HOST . '" name="db_host" style="width:100px;" type="text" /></td><td><input type="submit" value="连接"></td></tr></table></form>'; } $items[$mysql_key] = array('value' => $db_ver, 'result' => $rst); if (!$rst) { $allow_install = false; } $pathinfo = check_pathinfo(); if (!$pathinfo) { $allow_install = false; } $hosta = isset($_SERVER['SERVER_ADDR']) ? $_SERVER['SERVER_ADDR'] : $_SERVER['HTTP_HOST']; $uria = $hosta . $_SERVER['REQUEST_URI'] . '?servera=ture'; $items["pathinfo的支持"] = array('value' => $pathinfo ? '支持' : '不支持', 'result' => $pathinfo); return array('group' => '基本需求', 'items' => $items, 'type' => 'require', 'allow_install' => $allow_install); } if (ini_get('safe_mode')) { $rst = is_callable('ftp_connect'); if (!$rst) { $allow_install = false; } $items['当安全模式开启时,ftp函数可用'] = array('value' => $rst ? '可用' : '不可用', 'result' => $rst); } $rst = preg_match('/[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+/', gethostbyname('www.example.com')); $items['DNS配置完成,本机上能通过域名访问网络'] = array('value' => $rst ? '成功' : '失败 (将影响部分功能)', 'result' => $rst); return array('group' => '基本需求', 'key' => 'require', 'items' => $items, 'type' => 'require', 'allow_install' => $allow_install); }
} fclose($fp); } $content = preg_split("\r?\n\r?\n", $content); if (strpos($content[1], 'SUPPORT_PATHINFO') !== false) { return true; } } if (function_exists('curl_init')) { ob_start(); $fp = curl_init($uri); curl_exec($fp); curl_close($fp); $str = ob_get_contents(); ob_end_clean(); return $str == 'SUPPORT_PATHINFO' ? true : false; } else { return false; } } if (check_pathinfo()) { $url = $_COOKIE['LOCAL_SETUP_URL']; setCookie('LOCAL_SETUP_URL', '', 0, '/'); Header('Location: ' . $url); //todo:进入安装流程 exit; } else { Header('Location: view/notice_pathinfo.html'); //todo:不支持pathinfo,警告页 exit; }