Значить так ст авлю у себя на локалке територию всё ок , но когда вхожу даётся такая ошибка: PHP Parse error: syntax error, unexpected T_THROW, expecting T_STRING in C:\\Program Files\\Apache Group\\Apache2\\htdocs\\include\\common_small.inc on line 47, referer: http://localhost/project.php вот содиржания файла common_small.inc PHP: <?php include_once(dirname(__FILE__)."/config.inc"); include_once(dirname(__FILE__)."/constant.inc"); include_once(dirname(__FILE__)."/ipcookie.inc"); include_once(dirname(__FILE__)."/debug.inc"); /* include_once(dirname(__FILE__)."/cache.inc"); */ include_once(dirname(__FILE__)."/database_small.inc"); $container = new Database(HOST_NAME, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD); $container_session = new Database(SESSION_HOST_NAME, SESSION_DATABASE_NAME, SESSION_DATABASE_USER, SESSION_DATABASE_PASSWORD); $container_fight = new Database(FIGHT_HOST_NAME, FIGHT_DATABASE_NAME, FIGHT_DATABASE_USER, FIGHT_DATABASE_PASSWORD); include_once(dirname(__FILE__)."/cgi.inc"); include_once(dirname(__FILE__)."/theme.inc"); include_once(dirname(__FILE__)."/module_small.inc"); include_module(array('session', 'personage', 'area', 'file')); function include_module($arr) { if (is_array($arr)) foreach ($arr as $item) module_include($item); } function print_r1($data) { print "<pre>"; print_r($data); print "</pre>"; } function make_seed() { list($usec,$sec) = explode(" ", microtime()); return ((float)$sec+(float)$usec) * 100000; } function print_r2($data) { global $DOCUMENT_ROOT; ob_start(); print_r($data); $s = ob_get_contents(); ob_end_clean(); $f = fopen($DOCUMENT_ROOT."/dbg.log", "a+"); fwrite($f, $s); fclose($f); } function throw($exception) { global $DOCUMENT_ROOT; if (EXCEPTION_STREAM == 1) { ob_start(); trigger_error($exception, E_USER_WARNING); $s = ob_get_contents(); ob_end_clean(); $f = fopen($DOCUMENT_ROOT."/exception.log", "a+"); fwrite($f, date("H:i:s").": ".$s.'\n'); fclose($f); } elseif (EXCEPTION_STREAM == 0) { if (EXCEPTION_LEVEL == 0) { } elseif (EXCEPTION_LEVEL == 1) { // $theme = new BaseTheme(); // print $theme->error($exception); // trigger_error($exception, E_USER_WARNING); } elseif (EXCEPTION_LEVEL == 2) { // trigger_error($exception, E_USER_ERROR); } } if (EXCEPTION_STOP) die; } function moneyFormat($amount = 0) { return sprintf("%.2f", $amount); } function moneyValue($amount = 0) { return abs(floatval($amount)); } function _pages($total, $offset, $limit) { $result = array(); if ($limit < $total) { $result[0] = array(); $result[0]["OFFSET"] = 0; $index = 0; for ($i = 0; $i < $total; $i += $limit) { $result[$index] = array(); $result[$index]["OFFSET"] = $i; if ($i == $offset) { $result[$index]["SELECTED"] = 1; $result["NEXT"] = array(); $result["NEXT"]["OFFSET"] = (($i+$limit) > $total)? $i : $i+$limit; $result["PREV"] = array(); $result["PREV"]["OFFSET"] = ($i == 0)? 0 : $i-$limit; } else { $result[$index]["SELECTED"] = 0; } $index++; } } return $result; } function getContainerChat($area_id) { global $container, $container_chat; if (!$area_id) return $container; $arr = getContainerParam($area_id); if ($arr['HOST'] == '') { $container_chat = &$container; } else if (($container->host_name != '') && ($container->host_name == $arr['HOST']) && ($container->database_name == $arr['DATABASE']) && ($container->database_user == $arr['USER'])) { $container_chat = &$container; // $container_chat = new Database($arr['HOST'], $arr['DATABASE'], $arr['USER'], $arr['PASSWORD']); } else { $container_chat = new Database($arr['HOST'], $arr['DATABASE'], $arr['USER'], $arr['PASSWORD']); } return $container_chat; } function getContainerParam($area_id) { global $container, $container_chat, $servers; /* для скорости берем напрямую из global $servers $list = module_invoke('server', 'list_chat', false, 0, $area_id); if (!$list || (count($list) == 0)) return false; # если не определены серверы для чата, то считаем, что чат не разделяется на сервера! $area = area_get($area_id); $container_array = array('HOST' => $area['CHAT_HOST'], 'DATABASE' => $area['CHAT_DATABASE'], 'USER' => $area['CHAT_USER'], 'PASSWORD' => $area['CHAT_PASSWORD']); if (!$container_array['HOST']) { $container_array['HOST'] = $list[0]['HOST_NAME']; $container_array['DATABASE'] = $list[0]['DATABASE_NAME']; $container_array['USER'] = $list[0]['USER']; $container_array['PASSWORD'] = $list[0]['PASSWORD']; } */ $container_array['HOST'] = $servers[0]['HOST_NAME']; $container_array['DATABASE'] = $servers[0]['DATABASE_NAME']; $container_array['USER'] = $servers[0]['USER']; $container_array['PASSWORD'] = $servers[0]['PASSWORD']; return $container_array; } /** * Посылка специального сообщения. Функцию можно вызывать откуда угодно, даже оттуда, где нет залогиненной * сессии (например из кронов). Также фукнцию можно вызывать для посылки сообщения игроку, находящемуся * где угодно, не обязательно в той же точке местоположения, что и текущий залогиненный игрок * @param integer $recipient_id - код персонажа, которому посылать сообщение * @param string $text - текст сообщение */ function send_chat_special($recipient_id, $text, $recipient_nick = '', $area_id = 0, $service = 100) { global $container_chat; $tmp_container_chat = $container_chat; if (!$recipient_nick || !$area_id) { $recipient = module_invoke('personage', 'get', $recipient_id); if (!$recipient_nick) $recipient_nick = $recipient['LOGIN']; if (!$area_id) { $container_chat = getContainerChat($recipient['AREA_ID']); # так как chat_save_system() использует глобальную $container_chat $area_id = $recipient['AREA_ID']; } } $res = module_invoke('chat', 'save_special', array( "AREA_ID" => $area_id, "PERSONAGE_ID" => 0, "PERSONAGE_LOGIN" => '', "RECIPIENT_ID" => $recipient_id, "RECIPIENT_LOGIN" => $recipient_nick, "SERVICE" => $service, "MESSAGE" => "private [".$recipient_nick."]: ".$text, )); $container_chat = $tmp_container_chat; return $res; } /** * Посылка системного сообщения сообщения. Аналог send_chat_special() * @param string $text - текст сообщение * @param integer $recipient_id - код персонажа, которому посылать сообщение */ function send_chat_system($recipient_id, $text, $service, $recipient_nick = '', $area_id = 0) { global $container_chat; $tmp_container_chat = $container_chat; if (!$recipient_nick || !$area_id) { $recipient = module_invoke('personage', 'get', $recipient_id); if (!$recipient_nick) $recipient_nick = $recipient['LOGIN']; if (!$area_id) { $container_chat = getContainerChat($recipient['AREA_ID']); # так как chat_save_system() использует глобальную $container_chat $area_id = $recipient['AREA_ID']; } } $res = module_invoke('chat', 'save_system', array( "AREA_ID" => $area_id, "PERSONAGE_ID" => 0, "PERSONAGE_LOGIN" => '', "RECIPIENT_ID" => $recipient_id, "RECIPIENT_LOGIN" => $recipient_nick, "SERVICE" => $service, "MESSAGE" => $text, )); $container_chat = $tmp_container_chat; return $res; } function areInTheSameDistrict($area1_id, $area2_id) { $parents1 = module_invoke('area', 'list_parent', false, $area1_id, " AND A.TYPE_ID=1"); #print_r2($parents1); $parents2 = module_invoke('area', 'list_parent', false, $area2_id, " AND A.TYPE_ID=1"); #print_r2($parents2); return ($parents1[0]['ID'] && $parents2[0]['ID'] && ($parents1[0]['ID'] == $parents2[0]['ID'])) ? true : false; } /** * Посылка простого сообщения. Функцию "настигает" получателя приватного сообщения в пределах района * @param integer $area_id - в какую комнату нужно отправлять сообщение * @param integer $sender_id - код персонажа - отправителя сообщения * @param string $sender_nick - ник персонажа - отправителя сообщения * @param string $sender_color - цвет сообщения персонажа - отправителя сообщения * @param integer $recipient_id - код персонажа, которому посылать сообщение * @param string $recipient_nick - ник персонажа, которому посылать сообщение * @param integer $service - 100 - private, 101 - to * @param string $full_msg_text - само сообщение полностью * @param string $ip - ip-адрес отправителя */ function send_chat_message($area_id, $sender_id, $sender_nick, $sender_color, $recipient_id, $recipient_nick, $service, $full_msg_text, $ip = '') { global $container_chat, $session_personage; # код отправителя должен быть задан всегда! if (!$sender_id) $sender_id = $session_personage['ID']; # код комнаты назначения и сервис должны быть установлены всегда! # if (!isset($area_id) || !isset($service)) # return false; # текст сообщения должен быть задан всегда! (если код отправителя 0 - значит, посылает администратор) if (!trim(strval($full_msg_text))) return false; # если не задан ник отправителя, вычисляем его здесь! if (!$sender_nick && $sender_id) { $sender = module_invoke('personage', 'get', $sender_id); $sender_nick = $sender['LOGIN']; } # если не задан ник получателя, пытаемся вычислить его здесь; может оказаться пустым, если не задан код получателя - это нормальная ситуация if (!$recipient_nick && !$recipient_id) { $recipient = module_invoke('personage', 'get', $recipient_id); $recipient_nick = $recipient['LOGIN']; } $tmp_container_chat = $container_chat; $ip = $ip ? $ip : getIP(); $full_msg_text = '<font color="'.$sender_color.'">'.$full_msg_text.'</font>'; # специальная обработка для приватных сообщений - они должны "настигать" получателя в пределах района! if ($service == 100) { if (!$sender) $sender = module_invoke('personage', 'get', $sender_id); if ($sender['AREA_ID'] != $area_id) { if (!areInTheSameDistrict($sender['AREA_ID'], $area_id)) { return module_invoke('chat', 'save_message', array( # дубль отправителю привата идет всегда! "AREA_ID" => intval($sender['AREA_ID']), "PERSONAGE_ID" => intval($sender_id), "PERSONAGE_LOGIN" => strval($sender_nick), # "PERSONAGE_COLOR" => strval($sender_color), "RECIPIENT_ID" => intval($recipient_id), "RECIPIENT_LOGIN" => strval($recipient_nick), "SERVICE" => intval($service), "MESSAGE" => strval($full_msg_text), "IP" => strval($ip), )); } $container_chat = getContainerChat($area_id); } } $res = module_invoke('chat', 'save_message', array( "AREA_ID" => intval($area_id), "PERSONAGE_ID" => intval($sender_id), "PERSONAGE_LOGIN" => strval($sender_nick), # "PERSONAGE_COLOR" => strval($sender_color), "RECIPIENT_ID" => intval($recipient_id), "RECIPIENT_LOGIN" => strval($recipient_nick), "SERVICE" => intval($service), "MESSAGE" => strval($full_msg_text), "IP" => strval($ip), )); $container_chat = $tmp_container_chat; if ($service == 100 && $sender['AREA_ID'] != $area_id) { # дубль отправителю привата module_invoke('chat', 'save_message', array( "AREA_ID" => intval($sender['AREA_ID']), "PERSONAGE_ID" => intval($sender_id), "PERSONAGE_LOGIN" => strval($sender_nick), # "PERSONAGE_COLOR" => strval($sender_color), "RECIPIENT_ID" => 0, "RECIPIENT_LOGIN" => '', "SERVICE" => intval($service), "MESSAGE" => strval($full_msg_text), "IP" => strval($ip), )); } return $res; } function check_html_msg($msg) { return $msg; } /** * Печатает 5 input полей - день, месяц, год, час, минуты * @param string $name - база для имен input полей * @param string $value - дата, отдельные части которой подставляются в качестве значений input-полей * @return string - результат */ function _form_date($name, $value) { if ($value) { # value = date("Y-m-d h:m"); $day1 = substr($value, 8); $month1 = substr($value, 5, 2); $year1 = substr($value, 0, 4); $hour1 = substr($value, 11, 2); $min1 = substr($value, 14, 2); } $result .= "<select name=\"".$name."_day\">\n"; for ($i = 1; $i < 32; $i++) { $result .= "<option value=\"$i\" ".(($day1 == $i)? "SELECTED" : "").">$i\n"; } $result .= "</select>\n"; $result .= ". <select name=\"".$name."_month\">\n"; $result .= "<option value=\"01\" ".((intval($month1) == 1)? "SELECTED" : "").">Январь\n"; $result .= "<option value=\"02\" ".((intval($month1) == 2)? "SELECTED" : "").">Февраль\n"; $result .= "<option value=\"03\" ".((intval($month1) == 3)? "SELECTED" : "").">Март\n"; $result .= "<option value=\"04\" ".((intval($month1) == 4)? "SELECTED" : "").">Апрель\n"; $result .= "<option value=\"05\" ".((intval($month1) == 5)? "SELECTED" : "").">Май\n"; $result .= "<option value=\"06\" ".((intval($month1) == 6)? "SELECTED" : "").">Июнь\n"; $result .= "<option value=\"07\" ".((intval($month1) == 7)? "SELECTED" : "").">Июль\n"; $result .= "<option value=\"08\" ".((intval($month1) == 8)? "SELECTED" : "").">Авгутс\n"; $result .= "<option value=\"09\" ".((intval($month1) == 9)? "SELECTED" : "").">Сентябрь\n"; $result .= "<option value=\"10\" ".((intval($month1) == 10)? "SELECTED" : "").">Октябрь\n"; $result .= "<option value=\"11\" ".((intval($month1) == 11)? "SELECTED" : "").">Ноябрь\n"; $result .= "<option value=\"12\" ".((intval($month1) == 12)? "SELECTED" : "").">Декабрь\n"; $result .= "</select>\n"; $result .= ". <select name=\"".$name."_year\">\n"; $y = date("Y"); for ($i = $y; $i < ($y+4); $i++) { $result .= "<option value=\"$i\" ".(($year1 == $i)? "SELECTED" : "").">$i\n"; } $result .= "</select>\n"; $result .= " <select name=\"".$name."_hour\">\n"; for ($i = 0; $i < 24; $i++) { $result .= "<option value=\"$i\" ".(($hour1 == $i)? "SELECTED" : "").">$i\n"; } $result .= "</select>\n"; $result .= ": <select name=\"".$name."_min\">\n"; for ($i = 0; $i < 60; $i++) { $result .= "<option value=\"$i\" ".(($min1 == $i)? "SELECTED" : "").">$i\n"; } $result .= "</select>\n"; return $result; } function initGlobalVariables($sid) { # используется также в ботах global $session, $session_user, $session_personage, $session_area, $container_chat, $session_position; if ($sid) { $session = module_invoke("session", "get", $sid); $session_user = module_invoke("session", "get_user", $session["UID"]); $session_personage = module_invoke("personage", "get", $session["UID"]); $session_area = module_invoke("area", "get", $session_user["AREA_ID"]); $session_position = module_invoke("area", "get_position", $session_user["AREA_ID"]); $container_chat = getContainerChat($session['AREA_ID']); } } function varSet($varName = false) { global $_GET, $_POST; if (!$varName) { return false; }; return isset($_GET[$varName]) || isset($_POST[$varName]) ? true : false; } function getVar($varName = false) { global $_GET, $_POST; if (!$varName) { return false; }; if (isset($_GET[$varName])) { return $_GET[$varName]; }; if(isset($_POST[$varName])) { return $_POST[$varName]; }; return false; } function nick2html($nick) { return str_replace('"', '"', $nick); } global $cronTag, $activeCookie; if (!isset($cronTag) || ($cronTag == false)) { $ipaddr = ip2long(getIP()); if (!isset($_COOKIE["active"]) || (!checkActiveCookie($_COOKIE["active"], $ipaddr))) { $cookie = generateActiveCookie($ipaddr); setcookie("active", $cookie); $activeCookie = $cookie; } else { $activeCookie = $_COOKIE["active"]; }; }; $cgi = new CGI(); $theme = new BaseTheme(); $cache = false; /* $cache = new Cache(); */ $cache = false; initGlobalVariables($sid); if ($session_user['LOGIN'] == 'root') { $container->is_debug = true; $container_fight->is_debug = true; $container_session->is_debug = true; $container_chat->is_debug = true; } ?> Вот не разберусь в чём тама проблема, кто поможит в проблеме подкину 3 WMZ, жду ответов.
я так понял, что у тебя переменная уже занята либо невозможно ее инициализировать) попробуй изменить ее на чтолибо другое
Ошибка в этой строке: PHP: function throw($exception) { В пятом php нельзя использовать throw как название функции. Читай здесь: http://ru.php.net/throw
раз тема зашла о территории, то вопрос такой - как можно сделать бэкап баз на денвер? а то 12 метров он не тянят, подкиньте идею...