Помогите, кто сталкивался... Зеркальную сайт на новый сервер. Аккуратно RSYNCом перенес /var/www
, конфиги Апача и Nginx. Базу перенёс СКУЛЬДампом. Все установленные пакеты с донора установил на новом серваке. Разница только в том что старый Debian
8.6, а новый 8.8. Ну и естественно они находятся в разных сетях и IP
у них разные! Но сайт не открывается на новом сервере.
Вылезает ошибка
При этом если даже по доменному имени зайти - то же самое. В поисках "проблемы" нашел где она генерится!
private function init() {
// singleton
self::$self = $this;
// templates
$this->initTemplates();
// sql
$sql = new sql;
if($sql->connectFailed) {
$this->fatalError('Не могу подключиться к MySQL серверу<br>' . $sql->lastError);
}
if($sql->selectDBFailed) {
$this->fatalError('Невозможно выбрать базу данных: ' . $sql->dbname);
}
// start session
if($this->options['use_sessions']) {
Session::start();
}
// init site id
/*
$SiteDetector = new SiteDetector;
$Site = $SiteDetector->getSiteData();
$this->stack('Site', $Site);
define('SITE_ID', $SiteDetector->getSiteId());
/**/
$site = UrlUtils::getSiteInfo();
if(!$site['id']) {
$this->fatalError('"'.HTTP_HOST.'" is unknown host');
} else {
// site url
$this->site_url = $site['url'];
define('SITE_ID', $site['id']);
$en = false; $rus = false;
switch (SITE_ID) {
case 6: $rus = true; break;
case 7: $en = true; break;
default: $rus = true; break;
}
define('SITE_ID_CONDITION_STR', '`site_id` = "'.$site['id'].'"');
}
При этом конкретно вот эта процедура останавливает загрузку сайта.
$site = UrlUtils::getSiteInfo();
if(!$site['id']) {
$this->fatalError('"'.HTTP_HOST.'" is unknown host');
} else {
// site url
$this->site_url = $site['url'];
define('SITE_ID', $site['id']);
$en = false; $rus = false;
switch (SITE_ID) {
case 6: $rus = true; break;
case 7: $en = true; break;
default: $rus = true; break;
}
Гуглю уже 3-ий день, нигде не могу найти почему же unknown host
и для кого именно он unknown
Пока Гуглил нашел несколько сайтов которые так же с такой ошибкой открываются. На них есть упоминание о Wise CMS
и GEN3 CMS
Может кто сталкивался? Где копать? Подозреваю что где-то у меня в конфетах апача или nginx нахватает чего-то, или СКУЛя.... Но все конфиги переносил так же с донора и в них правил hostname
и прочее под новый сервак.
Код UrlUtils.inc.php :
<?php
class UrlUtils {
private static $url; // site url
private static $reservedVars;
/**
* Взять адрес сайта
*
* @version 1.0
* @return URL
*/
public static function getSiteUrl() {
if(self::$url) {
return self::$url;
} else {
list($urls, $urlsById) = self::_getUrls();
$sites = self::_getSites();
$mainUrl = $sites[SITE_ID]['main_url'];
$mainUrl = $urlsById[$mainUrl]['url'];
$url = 'http://' . $mainUrl.'/';
return $url;
}
}
/**
* Взять URL папки.
*
* @param $id id/key папки
* @version 1.0
* @return unknown
*/
public static function getUrl($id) {
$folder = SimpleSQL::getRow('folders', $id);
$uri[] = $folder['alias'] ? $folder['alias'] : $folder['id'];
while ($folder['level'] > 1) {
$folder = SimpleSQL::getRow('folders', $folder['parent']);
$uri[] = $folder['alias'] ? $folder['alias'] : $folder['id'];
}
$uri = array_reverse($uri);
unset($uri[0]);
if(count($uri)) {
$uri = implode('/', $uri) . '/';
} else {
unset($uri);
}
$url = UrlUtils::getSiteUrl() . $uri;
return $url;
}
/**
* Получить id из URI строки.
* Также возращаяет дополнительные переменные в виде массива.
*
* @version 1.0
* @return array
*/
public static function parseUrl() {
$url = $_GET['url'];
if($url[strlen($url) - 1] == '/') {
$url = substr($url, 0, -1);
}
$url = addslashes($url);
if($url) {
$url = explode('/', $url);
} else {
$url = array();
}
foreach ($url as $key => $uri) {
if(self::_processUri($uri) == 'reserved') { // this reserved var
unset($url[$key]);
}
}
if(is_array($url)) {
foreach ($url as $dir) {
if(is_numeric($dir)) {
$id = $dir;
if(!CacheFolders::get($id)) {
$id = null;
break;
}
} else {
$id = CacheFolders::getIdBy('alias', $dir);
}
if(!$id) {
break;
}
if($parent) {
if(CacheFolders::getParent($id) != $parent) {
$id = null;
break;
}
}
$parent = $id;
}
}
$out = $id;
return $out;
}
/**
* Подставить http:// для $link, если оно не подставлено
*
* @param string $link
* @version 1.0
* @return string
*/
public static function setHttp($link) {
if($link == 'http://') $link = null;
else if($link && substr($link, 0, 7) != 'http://') $link = 'http://' . $link;
return $link;
}
/**
* Поставить в конце строки слеш, если его нет
*
* @param string $str
* @return string
*/
public static function setLastSlash($str) {
if($str[strlen($str)-1] != '/') $str .= '/';
return $str;
}
/**
* Получить информацюи о сайте по текущему URL-у
*
* @version 1.0
* @return array
*/
public static function getSiteInfo() {
$host = HTTP_HOST;
$uri = self::_getUri();
$path = explode('/', $uri);
$_path = $host;
list($urls, $urlsById) = self::_getUrls();
if($urls[$host]) {
$url = $urls[$_path];
} else {
foreach ($path as $uri) {
$_path .= '/' . $uri;
if($site = $urls[$_path]) {
$url = $site;
break;
}
}
}
if(!$url) {
return ;
}
$siteId = $url['parent'];
$sites = self::_getSites();
$mainUrl = $sites[$siteId]['main_url'];
$mainUrl = $urlsById[$mainUrl]['url'];
if($mainUrl) {
$siteInfo = array(
'url' => 'http://' . $mainUrl . '/',
'id' => $siteId
);
self::$url = $siteInfo['url'];
return $siteInfo;
}
}
/**
* Перенаправить пользователя
*
* @param $url string
* @version 1.0
* @return array
*/
public static function Redirect($url) {
Header("Location: $url");
exit;
}
/**
* Взять зарезервированную переменную
* Типа, document или page
*
* @param $var string
* @version 1.0
* @return mixed
*/
public static function getReservedVar($var) {
if(!self::$reservedVars) {
return false;
}
return (array_key_exists($var, self::$reservedVars)) ? self::$reservedVars[$var] : null;
}
/**
* Взять все зарезервированные переменные для построениея URL
*
* @version 1.0
* @return void
*/
public static function getReservedVars() {
if(!self::$reservedVars) {
return false;
}
$uri = '';
if(is_array(self::$reservedVars)) {
foreach (self::$reservedVars as $varName => $value) {
$uri[] = $varName . (is_string($value) ? $value : null);
}
$uri = implode('/', $uri);
if($uri) {
$uri .= '/';
}
}
return $uri;
}
/**
* Обновить текущую страницу
* (удобно для сброса POST запроса)
*
* @version 1.0
* @return void
*/
public static function refresh() {
$url = $_SERVER['REQUEST_URI'];
$url = preg_replace('/(?:&|\?)dummy=[0-9]+/i', null, $url);
$delimiter = strpos($url, '?') === false ? '?' : '&';
$dummy = 'dummy='.mktime();
self::Redirect($url . $delimiter . $dummy);
}
/**
* Вернуться назад
*
* @version 1.0
* @return void
*/
public static function goBack() {
$url = $_SERVER['HTTP_REFERER'];
$url = preg_replace('/(?:&|\?)dummy=[0-9]+/i', null, $url);
$delimiter = strpos($url, '?') === false ? '?' : '&';
$dummy = 'dummy='.mktime();
self::Redirect($url . $delimiter . $dummy);
}
/**
* Получить ссылку на родительскую папку
*
* @return string
*/
public static function getGoBackURL()
{
if ($_SERVER['HTTP_REFERER'])
{
$url = $_SERVER['HTTP_REFERER'];
}
else
{
$self_url = self::getSiteUrl() . $_GET['url'];
$url = substr($self_url, 0, strrpos($self_url, '/', -2) + 1);
}
return $url;
}
/**
* Построить урл для CMS
*
* @param $url - урл внутри цмски
* @version 1.0
* @return string
*/
public static function cmsUrl($url) {
$url = self::getSiteUrl() . $GLOBALS['config']['admin_dir'] . '/index.php?url=' . urlencode($url);
return $url;
}
public static function sendNoCacheHeaders() {
header('Expires: Thu, 01 Jan 1970 00:00:01 GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
}
private static function _getUrls() {
$cacheFile = 'site_urls';
if($cache = Cache::load($cacheFile)) {
$urls = $cache;
} else {
$urls = SimpleSQL::getRows('sites_urls');
Cache::save($cacheFile, $urls, false, 'SiteUrls');
}
$urlsById = $urls;
ArrayUtils::setIndexArray($urls, 'url');
ArrayUtils::setIndexArray($urlsById);
return array($urls, $urlsById);
}
private static function _getSites() {
$cacheFile = 'sites';
if($cache = Cache::load($cacheFile)) {
$sites = $cache;
} else {
$sites = SimpleSQL::getRows('sites');
Cache::save($cacheFile, $sites, false, 'Sites');
}
ArrayUtils::setIndexArray($sites);
return $sites;
}
private static function _getUri() {
$uri = $_SERVER['REQUEST_URI'];
if($uri[0] == '/') {
$uri = substr($uri, 1);
}
if($uri[strlen($uri)-1] == '/') {
$uri = substr($uri, 0, -1);
}
return $uri;
}
private static function _processUri($uri) {
$match = false;
$vars = $GLOBALS['reservedVars'];
if(is_array($vars)) {
foreach ($vars as $key) {
$pattern = '/'.$key.'([0-9]*)$/i';
$match = preg_match($pattern, $uri, $value);
if($match) {
$value = $value[1];
self::$reservedVars[$key] = $value;
break;
}
}
}
return $match ? 'reserved' : false;
}
}
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Имею массив байтов, байты в массив записаны в кодировке UTF-8, соответственно нужно как-то преобразовать байты в строку такой же кодировке,...