<?


## Пример записи в файле httpd.conf, которую копируем из vhosts.conf от денвера
/*

# --- domain.com :: BEGIN --- #
# Host /home/domain.com/www (41):
Listen 127.0.0.1:80
<VirtualHost *:*>
  DocumentRoot "X:/home/domain.com/www"
  ServerName "domain.com"
  ServerAlias "domain.com" "www.domain.com"
  ScriptAlias /cgi/ "/home/domain.com/cgi/"
  ScriptAlias /cgi-bin/ "/home/domain.com/cgi-bin/"
  ErrorLog "/home/domain.com/error.log"
</VirtualHost>
# --- domain.com :: END --- #

*/
## Конец примера


## Функция прописывает все алиасы хоста из массива $aServerAliases
## в файл httpd.conf (его расположение нужно изменить в функции),
## а затем вписывает все созданные алиасы в файл хостов hosts.

### $sServerName - имя сервера для того, чтобы найти наш блок между строк:
##  # --- {$sServerName} :: BEGIN --- #
##  # --- {$sServerName} :: END --- #
### $sIP - IP для файла hosts
### $aServerAliases - все(!) алиасы, которые нужно вписать
### ($sServerName впишется самостоятельно)

### P.s. Не забывайте разрешать касперскому изменять файл хостов, а также
### перезапускать сервер после вызова функции, если нужнен "мгновенный" результат
function setDenwerAliases($sServerName$sIP$aServerAliases = array())
{     
$sHTTPD 'X:\usr\local\apache\conf\httpd.conf';
    
$sHosts 'C:\WINDOWS\system32\drivers\etc\hosts';

    
# дальше есть file_exists(), но на всякий пожарный есть и такая проверка :)
    
if (gethostbyaddr(getenv('HTTP_HOST')) != 'localhost')
        return 
false;
    if (
file_exists($sHTTPD))
    {         
$sConf file_get_contents($sHTTPD);
        
$s1 '# --- ' $sServerName ' :: BEGIN --- #';
        
$s2 '# --- ' $sServerName ' :: END --- #';
        if (
preg_match("!" $s1 "(.*?)" $s2 "!si"$sConf$a))
        {             
# Изменяются только(!) алиасы.
            
if (preg_match("!ServerAlias(.*?)ScriptAlias!si"$a[0], $tmp))
            {                 
$aServerAliases[] = $sServerName;                 $sAliases '"' join('" "'$aServerAliases) . '"';
                
$s str_replace(trim($tmp[0]), "ServerAlias {$sAliases}\r\n  ScriptAlias"$a[0]);
                
$sNewConf preg_replace("!" $s1 "(.*?)" $s2 "!si"$s$sConf);
                
file_put_contents($sHTTPD$sNewConf);             }         }

        if (
file_exists($sHosts))
        {             
$aLines file($sHosts);
            
$aHosts = array();
            foreach (
$aLines as $sLine)
            {                 
$sLine trim($sLine);                 if ((strpos($sLine'#') === 0) || empty($sLine))
                    continue;

                @list(
$sIP$sHost$sTmp) = preg_split("/\s/"$sLine);
                
$aHosts[] = @trim($sHost);
            }
            
$sData '';
            foreach (
$aServerAliases as $k=>$sAlias)
            {                 if (!
in_array($sAlias$aHosts))
                    
$sData .= "\r\n{$sIP} {$sAlias}";             }
            if (
$sData)
            {                 
$fp fopen($sHosts'a');
                
fwrite($fp$sData);
                
fclose($fp);             }
        }     }
}





highlight_file(__FILE__);


?>