Hilfe mit Vhosts

Irgendwelche Probleme mit XAMPP für Windows? Dann ist hier genau der richtige Ort um nachzufragen.

Hilfe mit Vhosts

Postby Simon80 » 01. July 2006 15:08

Ich bin jetzt von den Ports weg, da mir das zu unsicher ist...

Hosts:
Code: Select all
127.0.0.1       localhost
127.0.0.1   xampp
127.0.0.1   wow-macros


Vhost Teil der Httpd.conf:
Code: Select all
# **************************************************************
#
# Virtual Hosts Settings
#
# **************************************************************
NameVirtualHost *:80

<VirtualHost *:80>
   DocumentRoot C:/xampp/xampp/htdocs
   ServerName xampp
   <Directory C:/xampp/xampp/htdocs>
      Order deny,allow
      Deny from all
      Allow from 127.0.0.1
   </Directory>
</VirtualHost>

<VirtualHost *:80>
   DocumentRoot C:/www/www
   ServerName localhost
   <Directory C:/www/www>
      Order deny,allow
      Deny from all
      Allow from 127.0.0.1
   </Directory>
</VirtualHost>


Wenn ich http://xampp aufrufe, klappt das wunderbar, das Xampp verzeichnis wird aufgerufen und Fehlerfrei angezeigt...

Rufe ich jedoch http://localhost auf, erhalte ich folgende fehlermeldung:
Umleitungsfehler: Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann.

Inhalt der index.php von c:/www/www
Code: Select all
<?php
   if($p == "") header("Location: ../?p=main");

   include("./inc/default.inc.php");
   include("../gethost.php");
   include("./inc/getmod.inc.php");

   // header
   include("./php/_header.php");
   include("./php/_menu.php");

 if (file_exists("./php/".basename("$_GET[p].php")))
        {
          include("./php/".basename("$_GET[p].php"));
        }
    else
        {
         include("./php/notfound.php");
        }

   include("./php/_footer.php");

   include("../page_menu.php");
?>


Bei der letzen Installierten Version von Xampp lief alles noch wunderbar :(

Ich bin am verzweifeln, weil ich seh keine Fehler mehr..

Bin für jede Hilfe dankbar!

Danke und gruss
Simon
Simon80
 
Posts: 5
Joined: 01. July 2006 00:53

Postby Wiedmann » 01. July 2006 15:44

Rufe ich jedoch http://localhost auf, erhalte ich folgende fehlermeldung:
Umleitungsfehler: Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann.
Code: Select all
<?php
   if($p == "") header("Location: ../?p=main");

Logisch. "$p" ist an dieser Stelle noch nicht definiert und sozusagen immer `==""´. Weshalb bei jedem Aufruf der Datei die function header() ausgeführt wird und die Datei sich endlos selbst aufruft.

BTW:
Der Location-Header erwartet eine absolute URI mit FQDN.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Simon80 » 01. July 2006 15:50

Hmm ok, seltsam ist nur das genau dieser Aufruf mit der letzen von mir verwendeten Xampp version einwandfrei lief...
Ebenso online ;)

hmm Da ich dieselbe index.php auch online verwenden möchte, such ich nur noch wie ich die url auslesen kann, das dies dann als basedir angegeben werden kann...

Mit: apache_getenv("SERVER_ADDR"); erhalte ich leider nur 127.0.0.1..
Mit: $server_name = $_SERVER['DOCUMENT_ROOT']; gibts den localen pfad..

Ah, mit $basedir = $_SERVER['SERVER_NAME']; hats geklappt :) gibt mir den hostnamen zurück..

Wenn ich nun aber:
Code: Select all
  $basedir = $_SERVER['SERVER_NAME'];
   if($p == "") header("Location: http://$basedir/?p=main");

verwende, erhalte ich immernoch dieselbe Fehlermeldung:
Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann.
Last edited by Simon80 on 01. July 2006 16:09, edited 1 time in total.
Simon80
 
Posts: 5
Joined: 01. July 2006 00:53

Postby Wiedmann » 01. July 2006 16:07

Hmm ok, seltsam ist nur das genau dieser Aufruf mit der letzen von mir verwendeten Xampp version einwandfrei lief...
Ebenso online

Möglich. Aber wie heist es so schön: Manual lesen bildet...

hmm Da ich dieselbe index.php auch online verwenden möchte, such ich nur noch wie ich die url auslesen kann, das dies dann als basedir angegeben werden kann...

Was hat eine URI mit einem Basedir zu tun? Aber vielleicht drückst du dich auch nur missverständlich aus...

Mit: apache_getenv("SERVER_ADDR"); erhalte ich leider nur 127.0.0.1..

Was sonst? (sofern der Client derselbe Recher ist wie der Server)

BTW: phpinfo() ist dir bekannt?
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Simon80 » 01. July 2006 16:10

Bin eigentlich ein Edit-Freak..

Ja phpinfo() ist mir bekannt.

----

Ah, mit $basedir = $_SERVER['SERVER_NAME']; hats geklappt :) gibt mir den hostnamen zurück..

Wenn ich nun aber:
Code: Select all
  $basedir = $_SERVER['SERVER_NAME'];
   if($p == "") header("Location: http://$basedir/?p=main");

verwende, erhalte ich immernoch dieselbe Fehlermeldung:
Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann.

EDIT:
Hab mir jetzt eine test.php in c:/www/www angelegt.
Die funktioniert auch, und gibt mir brav phpinfo() aus, nur seh ich da leider nix wesshalb ich mit der index.php die obengenannte fehlermeldung erhalte :|
Simon80
 
Posts: 5
Joined: 01. July 2006 00:53

Postby Stefan » 01. July 2006 16:17

Code: Select all
# **************************************************************
#
# Virtual Hosts Settings
#
# **************************************************************
NameVirtualHost *:80

<VirtualHost *:80>
   DocumentRoot C:/xampp/xampp/htdocs
  [......]


Du kannst hier linuxlike "/xampp/xampp/htdocs" verwenden. Der führende Schrägstrich setzt an der Partitionsgrenze an. Das bedeutet das Du den ganzen Krempel ohne Pfade anzupassen auch auf eine andere Partions verschieben könntest. Das gilt auch für Pfadangaben in scripten. Zudem glaube ich(k.A. in Wirklichkeit), daß ein Winpfad so gar nicht richtig gültig ist und nur aus Toleranz funktioniert. Der müßte eigenlich so aussehen: c:\\xampp\xampp\[...].

Code: Select all
<?php
   if($p == "") header("Location: ../?p=main");

Das dürfte wohl das allgemeine "register_globals Problem" sein.
Carsten hat vollkommen Recht, $p gibt es nicht, höchstens $_GET['p'].

versuch es damit
Code: Select all
if(!isset($_GET['p']))
{
    header('Location:http://'.$_SERVER['SERVER_NAME'].'/?p=main');
}



Was ist FQDN?


http://de.wikipedia.org/wiki/FQDN

un tschüß, Stefan


// Nachtrag: Hey Leute, da geht man sich ein Käffchen holen und schon gehört der Beitrag zu alten Eisen....
User avatar
Stefan
 
Posts: 475
Joined: 26. December 2002 22:36
Location: Mitten in der sonnigen Südpfalz

Postby Wiedmann » 01. July 2006 16:20

Wenn ich nun aber:
Code: Select all
$basedir = $_SERVER['SERVER_NAME'];
if($p == "") header("Location: http://$basedir/?p=main");

naja. der Name "$basedir" ist ja wirklich unpassend... Mal abgesehen davon, dass du dir diese Variable ja auch sparen kannst.

verwende, erhalte ich immernoch dieselbe Fehlermeldung:

Logisch. Ich hab ja auch geschrieben, dass dieses Verhalten daher kammt, weil "$p" nicht definiert ist. Und daran hast du ja nichts geändert.

(Das mit dem Location stand ja nur im Zusatz)
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Simon80 » 01. July 2006 16:31

Vielen Dank Stefan, das war es!

versuch es damit
Code: Select all
if(!isset($_GET['p']))
{
    header('Location:http://'.$_SERVER['SERVER_NAME'].'/?p=main');
}


@Wiedman, ok das nächstemal benenn ich die um in $basehost, hast recht, der name war unpassend.

Code: Select all
Rufe ich jedoch http://localhost auf, erhalte ich folgende fehlermeldung:
Umleitungsfehler: Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann.
Code:
<?php
   if($p == "") header("Location: ../?p=main");

Logisch. "$p" ist an dieser Stelle noch nicht definiert und sozusagen immer `==""´. Weshalb bei jedem Aufruf der Datei die function header() ausgeführt wird und die Datei sich endlos selbst aufruft.

Definiere ich denn mit "header("Location: ../?p=main")" $p nicht??

Interessanter weise geht dieser Aufrufe auch:
Code: Select all
header('Location:/?p=main');

Wie es auch in der letzen Xampp version ging, aber um künftige fehler zu vermeiden, werde ich das nicht mehr Relativ schreiben.

Vielen Dank und Gruss
Simon
Simon80
 
Posts: 5
Joined: 01. July 2006 00:53

Postby Stefan » 01. July 2006 16:42

Definiere ich denn mit "header("Location: ../?p=main")" $p nicht??

Nein. Und nun überleg mal was genau Du hier tust.

Dein "Problem" liegt woanderst.
Lies mal das http://de.php.net/register_globals

Kannst Du nun verstehen, wieso $p nicht gibt/definiert ist?

Verstänisprobleme? Poste Deine Fragen.

Code:
header('Location:/?p=main');

Wenn Du es Carsten nicht glauben magst, kannst Du es hier nochmal nachlesen http://de.php.net/manual/de/function.header.php

Servus, Stefan
User avatar
Stefan
 
Posts: 475
Joined: 26. December 2002 22:36
Location: Mitten in der sonnigen Südpfalz

Postby Wiedmann » 01. July 2006 16:47

Ahoi Stefan, ist mir ja vorher gar nicht aufgefallen, dass du hier auch noch mitmischt :-)

Stefan wrote:
Code: Select all
if(!isset($_GET['p']))

Da ich ja immer was zu mosern hab *g* auch hier. Ist natürlich korrekt so. besser wäre hier aber:
Code: Select all
if(empty($_GET['p']))


Interessanter weise geht dieser Aufrufe auch:
header('Location:/?p=main');

Ich weis das es (meist) geht, weil die meisten Browser diesen falschen Location-Header richtig umsetzten. Die RFC schreibt hier halt was anderes vor. Auf diesen Umstand wird im PHP-Manual aber sogar extra hingewiesen!
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Simon80 » 01. July 2006 17:05

Jup Stefan, nun versteh ichs.
Das Manuel sollte ich wirklich mal lesen.

Bitte nicht hauen, ich hab php bisher nur als html 'extension' und für mysql abfragen verwendet..

Wie gesagt, werde von nun an den richtigen verweis auf Location Header verwenden, standarts einhalten vermidert die Fehlermeldungen.

Jedenfalls vielen dank nochmal :)
Grüsse
Simon
Simon80
 
Posts: 5
Joined: 01. July 2006 00:53


Return to XAMPP für Windows

Who is online

Users browsing this forum: luisehahne and 64 guests