Avatar billede shadowman87 Nybegynder
13. november 2008 - 19:55 Der er 6 kommentarer

flere domæner i xampp

Hej alle..

Først vil jeg lige gøre det klart fra starten af at jeg er 100% ny på dette område, og derfor meget meget blank, så når i kommer med eventuelle spørgsmål eller løsninger, så skær det lige ud i pap for mig :)

Men nu kommer spørgsmålet så, jeg har installeret den seneste tilgængelige version af Xampp på min windows XP Pro.
Og jeg kunne godt tænke mig at køre et domæne mere på min server, hvordan gør jeg dette ??

Jeg har forgæves prøvet flere guides som er skrevet i diverse forums, men dog uden held.

lidt info fra Xampp

  + Apache 2.2.9
  + MySQL 5.0.67 (Community Server)
  + PHP 5.2.6 + PHP 4.4.9 + PEAR
  + PHP-Switch win32 1.0 (use "php-switch.bat" in the xampp main directory)
  + XAMPP Control Version 2.5 from www.nat32.com   
  + XAMPP Security 1.0   
  + SQLite 2.8.15
  + OpenSSL 0.9.8i
  + phpMyAdmin 2.11.9.2
  + ADOdb 4.990
  + Mercury Mail Transport System v4.52
  + FileZilla FTP Server 0.9.27
  + Webalizer 2.01-10
  + Zend Optimizer 3.3.0
  + eAccelerator 0.9.5.3 für PHP 5.2.6 (but not activated in the    php.ini)

Håber nogle kan hjælpe mig med en simpel løsning..
Avatar billede showsource Seniormester
13. november 2008 - 21:11 #1
Bruger selv denne, som kan optimeres, men som virker:

<?php
// Kun localhost kan oprette vhosts
if($_SERVER["REMOTE_ADDR"] == "127.0.0.1") {



// START SETTINGS /////////////////////////////////////////////////////////////////////////////////


// Sti til httpd.conf
$vhost_fil = "C:/Apache/conf/extra/httpd-vhosts.conf";

// Sti til filen hosts
$hosts_path = "C:/WINDOWS/system32/drivers/etc/hosts";

// Stien til apache exe-fil. For apache2 ( httpd.exe ) ligger den i bin, for version 1.3.* ligger den i Apache
// Skal bruges til restart af apache, ( hvis safe_mode IKKE er on ), efter oprettelse af en vhost
// Husk at escape \ samt navngivning af servicen, her "Apache 2.2"
$apache_exe = "C:\\Apache\\bin\\httpd.exe -w -n \"Apache2.2\" -k restart";

// Evt. sti til hvor alle hosts er placeret
// Bruges som "value" i tekstfeltet for "DocumentRoot" i form til oprettelse af ny vhost
// Samt til directory-blok i textarea. ( Se $default_dir_value )
$default_path = "F:/www/";


// For Apache 2.2.8 ( og tidligere 2'er ver. mener jeg ) SKAL man ha' en directoryblok
// som tillader visning af dir hvor vhost ligger

$default_dir_value = "<Directory \"".$default_path."\">

    Options FollowSymLinks
    AllowOverride None

    Order allow,deny
    Allow from all

</Directory>";


// Start streng til en vhost
// tidligere ver. behøvede ikke at have :80 med
$vhost_start = "<VirtualHost *:80>";



// Hvis vhosts defineres i httpd.conf, så skriv linie nummer hvor første vhost container findes
// For at scriptet ikke skal læse hele filen igennem.
$startline = 27;


// END SETTINGS ///////////////////////////////////////////////////////////////////////////////////




if(!is_file($vhost_fil)) {
echo"Forkert sti-angivelse til vhosts-fil: <span style='color: #C00000; font-weight: bold;'>". $vhost_fil ."</span>";
exit;
}

if(!is_writable($vhost_fil)) {
echo"Der er ikke skriverettigheder til filen: <span style='color: #C00000; font-weight: bold;'>". $vhost_fil ."</span>";
exit;
}

$tjekstr = file_get_contents($vhost_fil);

$tjek = strpos($tjekstr, "NameVirtualHost *");

if($tjek === false) {
echo"Der skal bruges NameVirtualHost * i din vhost fil!";
exit;
}

if(!is_file($hosts_path)) {
echo"Forkert sti-angivelse til hosts filen: <span style='color: #C00000; font-weight: bold;'>". $hosts_path ."</span>";
exit;
}

if(basename($hosts_path) != "hosts") {
echo"Forkert navn p&aring; filen \"hosts\": <span style='color: #C00000; font-weight: bold;'>". basename($hosts_path) ."</span>";
exit;
}

if(!is_writable($hosts_path)) {
echo"Der er ikke skriverettigheder til filen \"hosts\": <span style='color: #C00000; font-weight: bold;'>". $hosts_path ."</span>";
exit;
}

$safe = ini_get('safe_mode');

$allhosts = array();
$gethosts = file($vhost_fil);

$line_nr = ((int)$startline != false ? $startline : 0);

// Finder hosts i $vhost_fil

    for($i = $line_nr; $i < count($gethosts); $i++) {

    $gethosts[$i] = trim($gethosts[$i]);

        if(substr($gethosts[$i], 0, 10) == "ServerName") {
        $allhosts[] = trim(strtolower(substr($gethosts[$i], 10)));
        }

    }


// BLIVER DER POSTET ??????? ////////////////////////////////////////

if(isset($_POST["host_name"]) && trim($_POST["host_name"]) != "") {

$back = "<a href=\"java script:history.go(-1);\">Tilbage</a>";

$domain = strtolower(trim($_POST["host_name"]));

    if (!preg_match("/^[a-zæøå0-9.]+$/", $domain)) {
        echo "Kun bogstaver og tal samt punktum kan bruges som domainnavn! ".$back;
    exit;
    }

    if(in_array($domain, $allhosts)) {
        echo"Domainnavn findes i forvejen! ".$back;
    exit;
    }


$new_dir = trim($_POST["host_path"]);

    if(!is_dir($new_dir)) {

        if(false == @mkdir($new_dir, 0777)) {
        echo"Kunne ikke oprette dir! ".$back;
        exit;
        }

    }



$conf_str = "\r\n# ". strtoupper($domain) ."\r\n";
$conf_str .= $vhost_start."\r\n\r\n";
$conf_str .= "ServerName ".$domain."\r\n";
$conf_str .= "DocumentRoot \"".$new_dir."\"\r\n\r\n";
$conf_str .= (get_magic_quotes_gpc() ? stripslashes($_POST["host_param"]) : $_POST["host_param"])."\r\n\r\n";
$conf_str .= "</VirtualHost>\r\n";

$skriv = fopen($vhost_fil, "ab");

    if($skriv) {

    fwrite($skriv, $conf_str);
    fclose($skriv);

    $hosts_str = "\r\n127.0.0.1 ".$domain;

    $tohosts = fopen($hosts_path, "ab");
    fwrite($tohosts, $hosts_str);
    fclose($tohosts);

        if($safe == false) {
        exec($apache_exe);
        }

    }else{

    echo"Kunne &aring;bne vhosts fil? ".$back;
    exit;

    }


header("Location:".$_SERVER["PHP_SELF"]);

}

// END TJEK PÅ POST /////////////////////////////////////////////////

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Apache Vhosts</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

<style type="text/css">

body {
    font-family: arial, verdana;
    color: black;
    font-size: 0.9em;
    margin: 0px;
    background-color: white;
    }

td, th {
    font-family: arial, verdana;
    color: black;
    font-size: 0.8em;
      }

a:link {
    color: #404040;
    text-decoration: underline;
      }

a:visited {
    color: #404040;
    text-decoration: underline;
          }
a:hover {
    color: #4f0000;
    text-decoration: none;
        }

.input {
    color: black;
    background-color: #ffffff;
    font-family: arial;
    font-size: 0.9em;
    border-color: black;
    border-width: 1px;
      }

.submit {
    font-size: 0.8em;
    border-width: 1px;
    border-color: black;
        }

.green {
    background-color: #006600;
    padding: 3px;
    color: #FEFAE4;
    font-size:  1.4em;
    border-bottom: solid #C0C0C0;
    border-width: 6px;
      }

.top {
    font-size: 0.8em;
    padding: 8px;
      }

.error {
    color: #C00000;
    font-weight: bold;
      }

</style>

</head>

<body>

<div style="text-align: center;">

    <div class="green">Vhosts i Apache</div>


    <div class="top">

    Scriptet er lavet med udgangspunkt i <a href="http://www.eksperten.dk/artikler/218">http://www.eksperten.dk/artikler/218</a>

    </div>


<table cellspacing="12" align="center"><tr>

    <td colspan="2" style="font-size: 0.7em; text-align: center;"><?php echo $_SERVER["SERVER_SOFTWARE"]; ?></td>

</tr><tr>

    <td style=" vertical-align: top;"><span style="font-weight: bold;">vhosts oprettet:</span><br />
<?php
$antal = count($allhosts);

    if($antal > 0) {
    $a = 1;
    echo"\r\n\t<table cellspacing=\"8\"><tr>\r\n\r\n";

        for($v = 0; $v < $antal; $v++) {
        echo"\t\t<td><a href=\"http://".$allhosts[$v]."\">".$allhosts[$v]."</a></td>\r\n\r\n";

            if($a%2 == 0 && $a != $antal) {
            echo"\t</tr><tr>\r\n\r\n";
            }
        $a++;
        }

    echo"\t</tr></table>";


    }else{

    echo"<span class=\"error\">Ingen vhosts oprettet!</span>";

    }

?></td>

    <td style=" vertical-align: top;"><span style="font-weight: bold;">Oprettelse af vhost:</span>

    <form action="<?php echo basename($_SERVER["PHP_SELF"]); ?>" method="post" style="display: inline;">
    <div style="padding-left: 8px;">
    Hostnavn: <small>(f.eks. nythost.localhost)</small><br />
    <input type="text" name="host_name" class="input" size="24"><br />
    Sti til DocumentRoot: <small>(f.eks. c:/www/nythost)</small><br />
    <input type="text" name="host_path" class="input" size="40" value="<?php echo $default_path; ?>"><br />
    Directory-blok for nyt vhost:<br />
    <textarea name="host_param" class="input" cols="60" rows="12"><?php echo htmlspecialchars($default_dir_value); ?></textarea><center><br />
    <input type="submit" value="Opret vhost" class="submit">
    <?php
      if($safe == true) {
?>
    <div class="top">Safemode er On, s&aring; Apache skal genstartes manuelt!</div>

<?php
    }
?>

    </div>
    </form></td>

</tr><table>

<?php

$hosts_file = file($hosts_path);

$inhost = array();

    for($h = 0; $h < count($hosts_file); $h++) {

        if(substr($hosts_file[$h], 0, 9) == "127.0.0.1") {

        $inhost[] = trim(substr($hosts_file[$h], 9));

        }

    }

$different = array_diff($allhosts, $inhost);

if(!empty($different)) {
echo"Vhost som ikke er defineret i hosts filen:\r\n";
echo"<div class=\"top\">".implode(", ", $different)."</div>";
}

?>
</div>


</body></html><?php

} // END if(localhost.......

?>
Avatar billede shadowman87 Nybegynder
13. november 2008 - 21:15 #2
sorry... men det der hjalp mig på ingen måde :S
Avatar billede showsource Seniormester
14. november 2008 - 09:32 #3
Nu er jeg ikke lige med på den xamp, men der er vel en fil, httpd-vhosts.conf ?
Åben den i f.eks. notepad, og ptøv med flg.

NameVirtualHost *:80


<VirtualHost *:80>
    DocumentRoot "C:/Apache/htdocs"
    ServerName localhost
</VirtualHost>

<VirtualHost *:80>

    DocumentRoot "F:/www/nythost"
    ServerName doamin.dk
    ServerAlias www.domain.dk

<Directory "F:/www/nythost">

    Options Indexes FollowSymLinks

    AllowOverride AuthConfig

    Order allow,deny
    Allow from all

</Directory>

Sti og domain skal du selvf. selv tilpasse!
Avatar billede showsource Seniormester
14. november 2008 - 09:33 #4
Hov, og glemte lige en afsluttende </VirtualHost> !!!!!
Avatar billede shadowman87 Nybegynder
14. november 2008 - 09:50 #5
Hov.. glemte faktisk at skrive at jeg har fået det til at virke, ved at læse nogle andre tråde her inde på eksperten :)

mit vellykkede resultat blev således..:

NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.domain1.dk
ServerAlias domain1.dk www.domain1.dk
DocumentRoot C:/xampp/htdocs/webfolder (mappen med filerne i)
DirectoryIndex index.php index.html index.htm
</VirtualHost>

<VirtualHost *:80>
ServerName www.domain.dk
ServerAlias domain.dk www.domain.dk
DocumentRoot C:/xampp/htdocs/webfolder (mappen med filerne i)
DirectoryIndex index.php index.html index.htm
</VirtualHost>


Og det snedige i det hele er så at xampp faktisk er forberedt til at køre med flere domæner, man skal bare ind og tilføje dem i vhost filen, da den default er included i httpd filen.

nu har jeg postet min løsning, så kan det være der er andre som kan bruge den, den virker for mig i xampp :)
Avatar billede shadowman87 Nybegynder
14. november 2008 - 09:52 #6
nåe ja, husk for guds skyld og genstart apache serveren efter en hver ændring i vhost filen, gøres blot fra windows tjenester :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Uanset kodesprog, så giver vi dig mulighederne for at udvikle det, du behøver.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester