vhost und absoluten pfadangaben relativ zu basis uri

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

vhost und absoluten pfadangaben relativ zu basis uri

Postby wfx » 17. February 2004 14:05

Hallo,
Umgebung:
Xampp mit dem Apache/2.0.48 und PHP/4.3.4
Dyndns mit wildcard (anchor.ath.cx)

/opt/lampp/etc/httpd.conf:
Code: Select all
NameVirtualHost anchor.ath.cx:80
                                                                                                       
<VirtualHost anchor.ath.cx:80>
        ServerName www.anchor.ath.cx
        ServerAlias anchor.ath.cx
        ServerAdmin webmaster@anchor.ath.cx
                                                                                                       
        DocumentRoot /opt/lampp/www/anchor.ath.cx/htdocs
        CustomLog /opt/lampp/www/anchor.ath.cx/log/access.log combined
        ErrorLog /opt/lampp/www/anchor.ath.cx/log/error.log
        ScriptAlias /opt/lampp/cgi-bin /opt/lampp/www/anchor.ath.cx/cgi-bin
        <Directory /opt/lampp/www/anchor.ath.cx/cgi-bin>
                Options ExecCGI
        </Directory>
</VirtualHost>
                                                                                                       
# S&W Software tuning
                                                                                                       
#NameVirtualHost megachip.anchor.ath.cx:80
                                                                                                       
<VirtualHost megachip.anchor.ath.cx:80>
        ServerName www.megachip.anchor.ath.cx
        ServerAlias megachip.anchor.ath.cx
        ServerAdmin webmaster@megachip.anchor.ath.cx
                                                                                                       
        DocumentRoot /opt/lampp/www/vhost/megachip.anchor.ath.cx/htdocs
#leider nicht...
        php_value include_path "/opt/lampp/www/vhost/megachip.anchor.ath.cx/htdocs"
        CustomLog /opt/lampp/www/vhost/megachip.anchor.ath.cx/log/access.log combined
        ErrorLog /opt/lampp/www/vhost/megachip.anchor.ath.cx/log/error.log
        ScriptAlias /cgi-bin /opt/lampp/www/vhost/megachip.anchor.ath.cx/cgi-bin
        <Directory /opt/lampp/www/vhost/megachip.anchor.ath.cx/cgi-bin>
                Options ExecCGI
        </Directory>
</VirtualHost>


Nun habe ich folgendes problem
Wen ich einen uri (ist eigentlich keiner aber...) so angebe
Code: Select all
<?php include("/inc.breadcrumb.php"); ?>

kommt der fehler:
Warning: main(/inc.breadcrumb.php): failed to open stream: No such file or directory in /opt/lampp/www/vhost/megachip.anchor.ath.cx/htdocs/index.php on line 29

Warning: main(): Failed opening '/inc.breadcrumb.php' for inclusion (include_path='.:/opt/lampp/lib/php') in /opt/lampp/www/vhost/megachip.anchor.ath.cx/htdocs/index.php on line 29


Aber die angabe funktioniert ohne probleme:
Code: Select all
<link rel="stylesheet" href="/css/main.css" type="text/css" media="screen" />


Hat das was mit dem deaktivierten "Virtual Directory Support" von php zu tun?

Danke
wfx

Ps:
Euer xampp ist wirklich eine feine sache.
Vorschlag für einen releasenamen: "ruckzuck" ;-)
Last edited by wfx on 18. February 2004 16:21, edited 1 time in total.
wfx
 
Posts: 4
Joined: 17. February 2004 13:33

Re: vhost und absoluten pfadangaben relativ zu basis uri

Postby Kristian Marcroft » 17. February 2004 15:22

wfx wrote:Umgebung:
Xampp mit dem Apache/2.0.48 und PHP/4.3.4
Dyndns mit wildcard (anchor.ath.cx)
Wen ich einen uri (ist eigentlich keiner aber...) so angebe
Code: Select all
<?php include("/inc.breadcrumb.php"); ?>

kommt der fehler:
Warning: main(/inc.breadcrumb.php): failed to open stream: No such file or directory in /opt/lampp/www/vhost/megachip.anchor.ath.cx/htdocs/index.php on line 29

Warning: main(): Failed opening '/inc.breadcrumb.php' for inclusion (include_path='.:/opt/lampp/lib/php') in /opt/lampp/www/vhost/megachip.anchor.ath.cx/htdocs/index.php on line 29


Aber die angabe funktioniert ohne probleme:
Code: Select all
<link rel="stylesheet" href="/css/main.css" type="text/css" media="screen" />


Hat das was mit dem deaktivierten "Virtual Directory Support" von php zu tun?

Danke
wfx

Ps:
Euer xampp ist wirklich eine feine sache.
Vorschlag für einen releasenamen: "ruckzuck" ;-)


Hi,

vielleicht liegt es daran, das "/css" wahrscheinlich ein "alias" ist.
und /inc.breadcrumb.php ist keiner....

aber mal so als Tipp...
Das "/" vor /inc.breadcrumb.php verweisst darauf, das du bis auf die ServerRoot ebene zurück gehst? Ich bezweifle aber das diese Datei in ServerRoot liegt?
Lass einfach mal das "/" weg...

/ = Root = unterste Ebene
../ = EIn Verzeichnis höher
Datei.php = die Datei "Datei.php" befindet sich im gleichem Verzeichnis.
Hierfür kann man auch ./Datei.php nehmen.

So long
KriS
User avatar
Kristian Marcroft
AF Moderator
 
Posts: 2962
Joined: 03. January 2003 12:08
Location: Diedorf

Postby wfx » 17. February 2004 15:32

Nein /css ist kein alias.

Kurz nochmal (mag sein das ich ja nur auf der leitung stehe :-))

z.B.
megachip.anchor.ath.cx/css/... oder
/css/... funktioniert

megachip.anchor.ath.cx/inc.breadcrumb.php funktioniert auch aber,
/inc.breadcrumb.php nicht?
wfx
 
Posts: 4
Joined: 17. February 2004 13:33

Postby Kristian Marcroft » 17. February 2004 15:43

wfx wrote:Nein /css ist kein alias.

Kurz nochmal (mag sein das ich ja nur auf der leitung stehe :-))

z.B.
megachip.anchor.ath.cx/css/... oder
/css/... funktioniert

megachip.anchor.ath.cx/inc.breadcrumb.php funktioniert auch aber,
/inc.breadcrumb.php nicht?


Hi,

selbst wenn /css kein alias ist, geht es auf den ServerRoot zurück...

und /inc.breadcrumb.php liegt nicht im ServerRoot...
würde es im ServerRoot liegen müsste es unter /opt/lampp/apache liegen müssen.
Es liegt ja aber wahrshienlich in einem "htdocs" Verzeichnis.

Hast du dich schon mal mit shellscripting und Linux auseinander gesetzt?
In der Konsole? Dann wüsstest du wovon ich rede...

So long
KriS
User avatar
Kristian Marcroft
AF Moderator
 
Posts: 2962
Joined: 03. January 2003 12:08
Location: Diedorf

Postby wfx » 17. February 2004 16:00

Code: Select all
<link rel="stylesheet" href="/css/main.css" type="text/css" media="screen" />

main.css ist in
/opt/lampp/www/vhost/megachip.anchor.ath.cx/htdocs/css/main.css
und sonst nirgends auch nicht unter /opt/lampp/htdocs/

http://megachip.anchor.ath.cx/css/main.css == /css/main.css
gilt aber nicht für die include (php) anweisung.

Hast du dich schon mal mit shellscripting und Linux auseinander gesetzt?

ja
In der Konsole? Dann wüsstest du wovon ich rede...

ja (init scriptchen und der gleichen, was man halt so benötigt).

Gilt den für dokumente nicht die "DocumentRoot" direktive?
Aus der docu:
The ServerRoot directive sets the directory in which the server lives.
und Für DocumentRoot:
This directive sets the directory from which httpd will serve files. Unless matched by a directive like Alias, the server appends the path from the requested URL to the document root to make the path to the document. Example:

DocumentRoot /usr/web

then an access to http://www.my.host.com/index.html refers to /usr/web/index.html.
wfx
 
Posts: 4
Joined: 17. February 2004 13:33

Postby Kristian Marcroft » 17. February 2004 16:24

Hi,

mag doch alles ein, aber das Prob ist doch längst gelöst...
lass das / weg und es geht....

So long
KriS
User avatar
Kristian Marcroft
AF Moderator
 
Posts: 2962
Joined: 03. January 2003 12:08
Location: Diedorf

Postby wfx » 17. February 2004 17:19

mag doch alles ein, aber das Prob ist doch längst gelöst...
lass das / weg und es geht....

Jein, ja natürlich kann ich es so machen und ich habe sogar überlegt am seitenkopf ein
Code: Select all
<?php $URI=($_SERVER['DOCUMENT_ROOT']); ?>

und an alle verweise so umzuschreiben
Code: Select all
include($URI. "/inc.breadcrumb.php");


das funktioniert ist aber umständlich und es sollte auch ohne diese krücke
funktionieren.
wfx
 
Posts: 4
Joined: 17. February 2004 13:33

Postby Stefan » 22. February 2004 18:16

Servus,

falls noch aktuell:

Dein Schwierigkeiten sind leicht aufzulösen.

Bei HTML Dokumenten beginnt der abslolute Pfad bei der DocumentRoot wie in der Apache konf notiert. Oder aus sicht des Browsers:
Nach dem Servernamen.

http://meinedomain.de " / " <- hier beginnt der absolute HTTP Pfad.
Also kannst Du, egal aus welcher Ebene, auf die Datei "/css.css" verweisen, und erwartet und gefunden wird sie auf der obersten Ebene des Dokumentroot.

Bei Sprachen wie PHP setzt der absolute Pfad wie Kris es erklärt hat eben auf der Root Ebene des Systems an. Deshalb findet php bei der Anweisung "include('/inc.php')" die Datei nicht, da sie auf der Rootebene erwartet wird.

Als Lösung benutzt Du einfach den relativen Pfad vom Script aus zu der Datei die eingebunden werden soll, oder Du benutzt den absoluten Pfad bis zu ihr. "include("/user/local/htdocs/inc.php")". Dies schließlich tust Du ja auch, indem Du mit "SERVER[DOC_ROOT]" erstmal den Pfad bis zum Webspace herholst.

Um es noch festzuhalten, Du hattest kein Problem, alles verhält sich genau so wie sein soll.

Merke:
HTTP beginn bei der DocumentRoot des Host.
PHP beginn auf der Rootebene des Sytems.


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


Return to XAMPP für Linux

Who is online

Users browsing this forum: No registered users and 6 guests