“new.domain.com” is unknown host

205
09 июня 2017, 12:12

Помогите, кто сталкивался... Зеркальную сайт на новый сервер. Аккуратно 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;
}

}

READ ALSO
Внутренние php константы

Внутренние php константы

Где посмотреть список внутренних констант php?

259
Как перевести массив байтов в строку UTF-8 в Visual C++

Как перевести массив байтов в строку UTF-8 в Visual C++

Имею массив байтов, байты в массив записаны в кодировке UTF-8, соответственно нужно как-то преобразовать байты в строку такой же кодировке,...

464
Как правильно вернуть *handle функцией

Как правильно вернуть *handle функцией

ЗдравствуйтеЕсть объявление структуры

248