1

Тема: Создание поддомена на Handyhost

Всем привет!

Столкнулся с проблемой, когда перешел на Handyhost. Ничего не буду писать про этот хостинг, это моя заморочка. Просто, вдруг кто-то окажется там же и у него, однозначно, возникнут эти же проблемы.

Если ставить движок в корень, то проблем нет. Если создать поддомен из панели управления хостом тоже. Только вот, этот поддомен засчитывается как еще один сайт, и если тариф на два сайта, то уже все, больше ничего не зальешь.

В настройках панели есть такая опция "Автоподдомены", которая позволяет создавать большое количество поддоменов, но не из панели управления, а через файловый менеджер или ftp. Просто создаешь новый каталог в корне и заливаешь туда сайт. Кажется просто, но не для My Engine. Заливаешь движок и ничего, сайт не открывается. В логах пишет ошибку

PHP Warning:  require(/var/www/u34334/data/www/3shaga.ru/system/function.dat): failed to open stream: No such file or directory in /var/www/u34334/data/www/3shaga.ru/demo/system/global.dat on line 29
PHP Fatal error:  require(): Failed opening required '/var/www/u34334/data/www/3shaga.ru/system/function.dat' (include_path='.:/opt/alt/php71/usr/share/pear') in /var/www/u34334/data/www/3shaga.ru/demo/system/global.dat on line 29

или

PHP Warning:  require(/var/www/u34334/data/www/3shaga.ru/system/function.dat): failed to open stream: No such file or directory in /var/www/u34334/data/www/demo.3shaga.ru/system/global.dat on line 29
PHP Fatal error:  require(): Failed opening required '/var/www/u34334/data/www/3shaga.ru/system/function.dat' (include_path='.:/opt/alt/php71/usr/share/pear') in /var/www/u34334/data/www/demo.3shaga.ru/system/global.dat on line 29

Это два разных способа создания поддомена. Первый, это создание поддомена в поддиректории домена, в каталоге основного домена создается папка, например demo, и туда заливается движок. Второй, создание поддомена в отдельной директории, т.е. в корне сайта создается своя директория для поддомена, в примере - demo.3shaga.ru.

Но в обоих случаях возникает ошибка из-за неправильного пути до файла function.dat.

В первом случаи это выглядит так

require(/var/www/u34334/data/www/3shaga.ru/system/function.dat

а должно быть так

require(/var/www/u34334/data/www/3shaga.ru/demo/system/function.dat

Решение этой проблемы такое, в файле global.dat прописываем такую строчку

$document_root = ''.$_SERVER['DOCUMENT_ROOT'].'/demo/';

Затем находим строку

define('DR', $_SERVER['DOCUMENT_ROOT']);

где заменяем $_SERVER['DOCUMENT_ROOT'] на $document_root

Загружаем измененный файл папку с поддоменом и у нас все работает (незабываем вместо "demo" вписать свою директорию).

Теперь, второй пример с отдельной директорией для поддомена. Там путь до файла function.dat выводится так

require(/var/www/u34334/data/www/3shaga.ru/system/function.dat

а нужно так

require(/var/www/u34334/data/www/demo.3shaga.ru/system/function.dat

В этом случаи в файле global.dat пишем

$root = str_replace('3shaga.ru', '', $_SERVER['DOCUMENT_ROOT']);
$document_root = ''.$root.''.$_SERVER['SERVER_NAME'].'';

Вместо 3shaga.ru пишем свой основной домен, затем находим

define('DR', $_SERVER['DOCUMENT_ROOT']);

где заменяем $_SERVER['DOCUMENT_ROOT'] на $document_root

Обновляем файл global.dat и у нас все работает.

Надеюсь, что кому-то это все то же поможет.

2

Re: Создание поддомена на Handyhost

Отличная работа. Благодарю!
Это фундаментальная проблема движка. Движку нужно знать расположение корневой папки , узнать ее можно с помощью $_SERVER['DOCUMENT_ROOT'], чаще всего это верный и рабочий способ, но в некоторых случаях переменная может содержать не то, что на самом деле ожидается.

3

Re: Создание поддомена на Handyhost

Проверьте пожалуйста новую версию 5.1.6 , все ли на этом хостинге работает ?
Был переделан способ определения коренной папки , поэтому с автоподдоменами проблем быть не должно.

4

Re: Создание поддомена на Handyhost

Ivan пишет:

Проверьте пожалуйста новую версию 5.1.6 , все ли на этом хостинге работает ?
Был переделан способ определения коренной папки , поэтому с автоподдоменами проблем быть не должно.

Проверил, все ОК smile