автоматическое создание хостов при регистрации

chery

Новичок
автоматическое создание хостов при регистрации

Здравствуйте. Я снова с вопросом по поводу автоматического генерирования хоста. После регистрации пользователю выделятеся имя третьего уровня типа: http://usernameblog.servername.it В общем вот до чего я докопался и вот мои соображения на этот счёт. (поиск по сайту ничего мне не подсказал). Итак:

1. Создаем каталог userblogs в каталоге conf апача (например /apache/conf/userblogs),
в каталоге, где собственно будут лежать блоги (например C:/WORK/Apache/userblogs).

2. Добавляем "Include conf/userblogs/"

3. При регистрации нового юзера (usernameblog) делаем следующее:
а) Создаем файл usernameblog.conf в каталоге userblogs:
PHP:
<VirtualHost XXX.XXX.XXX.XXX:80> 
       ServerName       usernameblog.servername.it 
       DocumentRoot    C:/WORK/Apache/userblogs/usernameblog/htdocs 
       ScriptAlias          /cgi-bin/ C:/WORK/Apache/userblogs/usernameblog/cgi-bin/ 
       ErrorLog            /C:/WORK/Apache/userblogs/usernameblog/logs/error.log 
       CustomLog        C:/WORK/Apache/userblogs/usernameblog/logs/access.log combined 
       <Directory C:/WORK/Apache/userblogs/usernameblog/htdocs> 
               Options FollowSymLinks 
               AllowOverride All 
               Order allow,deny 
               Allow from all 
       </Directory> 
       <Directory C:/WORK/Apache/userblogs/usernameblog/cgi-bin> 
               AllowOverride All 
               Options ExecCGI 
               Order allow,deny 
               Allow from all 
       </Directory> 
… 
</VirtualHost>
б) Создаем каталог usernameblog в каталоге C:/WORK/Apache/userblogs,
а также сопутствующие каталоги (logs, htdocs, cgi-bin)
в) Копируем в созданные каталоги файлы девственно чистого блога
г) Перегружаем конф апача.

Ребята, как мне автоматизировать этот процесс с php? Совсем уже запутался.
 

MiRacLe

просто Чудо
3.
a) [m]fopen[/m],[m]fwrite[/m],[m]fclose[/m] == [m]file_put_contents[/m]
б) [m]mkdir[/m]
в) [m]copy[/m] (тут стоит а стоит подумать - а копировать ли всё ? может использовать общее, а копировать(создавать) только конфигурационный файл
г) [m]ref.exec[/m]
 

chery

Новичок
PHP:
@ $fp = fopen("$DOCUMENT_ROOT/conf/userblogs/".$valid_user.".conf", "a");
  if (!$fp)
  {
   echo "<br>Не могу создать файл ". $valid_user."<br>";
   exit;
  }
  $content = "<VirtualHost XXX.XXX.XXX.XXX:80>  
       ServerName       ".$valid_user.".localhost.it  
       DocumentRoot    C:/WORK/Apache/userblogs/".$valid_user."/htdocs  
       ScriptAlias          /cgi-bin/ C:/WORK/Apache/userblogs/".$valid_user."/cgi-bin/  
       ErrorLog            /C:/WORK/Apache/userblogs/".$valid_user."/logs/error.log  
       CustomLog        C:/WORK/Apache/userblogs/".$valid_user."/logs/access.log combined  
       <Directory C:/WORK/Apache/userblogs/".$valid_user."/htdocs>  
               Options FollowSymLinks  
               AllowOverride All  
               Order allow,deny  
               Allow from all  
       </Directory>  
       <Directory C:/WORK/Apache/userblogs/".$valid_user."/cgi-bin>  
               AllowOverride All  
               Options ExecCGI  
               Order allow,deny  
               Allow from all  
       </Directory>  
…  
</VirtualHost>
";
  while (!feof($fp))
  {
  $content = fwrite($fp, $content);
  //echo $content."<br>";
  }
  
  fclose($fp);
Вот парни код, который создаёт у меня файл "имя_юзера".conf
Файл создаётся и туда записывается что нужно, но вот в конец после основных данных вставляется куча единичек. Просто дофига. И в конечном счёте этот по сути текстовой файл начинает весить 3 мб. Как мне избавится от этих единичек при записи в файл? Может у кого были подобные траблы. Подскажите пожалуйста.

-~{}~ 12.12.05 18:54:

Блин...всё разобрался. Не нужно было через цикл пускать. Пардон, ребята.

-~{}~ 13.12.05 18:25:

Парни, снова трабл. После всего орисанного, у меня должен выделяться домен типа http://cherry/localhost. Однако чего то не получается. Вот конфиг файл после регистрации на сайте под именем cherry (cherry.conf в C:\Program Files\Apache Group\Apache\conf\userblogs):
PHP:
<VirtualHost 127.0.0.1:80>  
       ServerName       cherry.localhost  
       DocumentRoot    C:/WORK/Apache/userblogs/cherry/htdocs  
       ScriptAlias          /cgi-bin/ C:/WORK/Apache/userblogs/cherry/cgi-bin/  
       ErrorLog            /C:/WORK/Apache/userblogs/cherry/logs/error.log  
       CustomLog        C:/WORK/Apache/userblogs/cherry/logs/access.log combined  
       <Directory C:/WORK/Apache/userblogs/cherry/htdocs>  
               Options FollowSymLinks  
               AllowOverride All  
               Order allow,deny  
               Allow from all  
       </Directory>  
       <Directory C:/WORK/Apache/userblogs/cherry/cgi-bin>  
               AllowOverride All  
               Options ExecCGI  
               Order allow,deny  
               Allow from all  
       </Directory>  
…  
</VirtualHost>
Вот. И нифига. Мало того, после всего этого я пытаюсь перезапустить апач, и он не стартует. Удаляю cherry.conf из conf\userblogs всё запускается. Ну блин слов нету. Делаю всё, как описано в документациях. Может чего в коде вышеприведённом не так. Гляньте, пожалуйста.
 

kolobok

fPanel Billing Coder
мдяяя ... ты скажи еще что он у тя в браузере не открывается так?
а ДНС править (файлик hosts) кто будет? дядя*?
 

chery

Новичок
Автор оригинала: kolobok
мдяяя ... ты скажи еще что он у тя в браузере не открывается так?
а ДНС править (файлик hosts) кто будет? дядя*?
Погоди, так это нужно чтобы после регистрации у меня автоматически ещё и в C:/WINDOWS/hosts прописывался ip? ну тоесть loclhost идёт как 127.0.0.1, тогда мой http://cherry.localhost будет уже 127.0.0.2?
Ну хоршо, так я не один такой зарегистрировавшийся буду. народу море. Как сделать так, чтобы ip на один увеличивался? ну то бишь не будет же со временем такого адреса: 127.0.0.1000.? Вот я про что. Блин, и ты первый, кто говорит про необходимость прописывать host.
 

kolobok

fPanel Billing Coder
chery
Ты жля начала головой то подумай. А потом пиши. /dev/hands тебе никто править не будет.
Код:
<VirtualHost 127.0.0.1:80>  
       ServerName       cherry.localhost
Код:
<VirtualHost 127.0.0.1:80>  
       ServerName       blablabla.localhost
Найди называется отличия и скажи где. Только не говори что ты не понял.

Для наводки. В hosts НЕ надо прописывать увеличивающиеся IP типа 127.0.0.2


[offtopmode]
Эх, Фаната бы сюда .... повеселиться ;)
[/offtopmode]
 

chery

Новичок
Всё заработало. Всем спасибо за внимание.

-~{}~ 26.12.05 10:46:

Здравствуйте. Парни есть вопрос вновь по этому проекту. У меня копируются файлы в созданные каталоги для какого то зарегистрировавшегося юзера. Проблема в считывании сценариев *.php в этих каталогах. Вот к примеру если я положу простой файлик image.php,
PHP:
<?
header ("Content-type: image/png");
$im = @imagecreatetruecolor(50, 100)
          or die("Cannot Initialize new GD image stream");
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5,  "Hello, World!", $text_color);
imagepng($im);
imagedestroy($im);
?>
который не ссылается ни на какие директории и не подлючает никаких файлов, а просто генерит вывод рисунка, то сценарий интерпретируется ПХП без проблем.
А вот как только у меня сценарий с какими то подключениями, к примеру начальная страница блога index.php:
PHP:
<?
   $blog_id=1;
   include dirname(__FILE__)."/bmc/start.php";
?>
Уже ничего не фурычит. Выводит мне стандартное сообщение 404 об ненайденой странице.
Это как нибудь можно обойти?
Потом, поменнял путь на абсолютный:
PHP:
<?
   $blog_id=1;
   include "C:\WORK\Apache\userblogs\al\htdocs\bmc\start.php";
?>
Всё равно не находит страницу. Подскажите пожалуйста.
 
Сверху