Avatar billede or.han Nybegynder
02. august 2007 - 23:39 Der er 9 kommentarer og
1 løsning

Bestemme roden af localhost

Hej

Mit problem er at når jeg kører PHP på min egen computer, kan jeg ikke lave adresser på følgende måde:
/mappe/mappe/fil.jpg

Altså jeg kan ikke skrive "/" og komme op til selve roden. Egentlig kommer jeg helt op til roden, fx C:\xampp\htdocs. Jeg vil kun op til roden af den applikation jeg bruger, fx C:\xampp\htdocs\applikation.

Det er lidt svært at forklare, men håber I forstår. Jeg tror jeg skal indstille noget i en .ht<*> fil af en art, men ved ikke hvilken og hvad.
Avatar billede mcardle Nybegynder
03. august 2007 - 01:15 #1
Hvis du starter med en stråstreg (/) i en sti, så vil den gå ud til roden.

Eks.:
<img src="/images/bil.jpg"> så vil den tage localhost/images/bil.jpg <-- Dette eksempel er lige meget, hvor du har skrevet det henne om det er i en php-fil i roden eller i localhost/mappe/mappe/mappe/fil.php

Hvis du skriver.:
<img src="images/bil.jpg"> <-- Dette eksempel vil tage den mappe du befinder dig i og lede efter en mappe der hedder images, hvor den vil tage billedet bil.jpg.

Dvs. hvis du har en localhost/fil.php, vil den lede efter localhost/images/bil.jpg, men hvis du har localhost/mappe/mappe/fil.php, så vil den lede efter localhost/mappe/mappe/images/bil.jpg.


Håber det giver mening.

//mcardle
Avatar billede or.han Nybegynder
03. august 2007 - 11:21 #2
Jeg forstår godt hvordan alt dette virker.

Lad mig forklare lidt yderligere. Alle mine PHP-projekter er placeret i C:\XAMPP\htdocs. Dvs. at jeg har en række mapper (til hvert projekt) i "htdocs". Når jeg vil køre et projekt, der fx hedder "test" så skriver jeg "http://localhost/test".

Det hele virker fint nok. Nogle gange i min HTML-kode ønsker jeg at skrive en adresse, fx til et billede, relativt fra roden. Eksempelvis "/imgs/billede1.jpg", men dette vil jo svare til "http://localhost/imgs/billeder1.jpg" og ikke "http://localhost/test/imgs/billeder1.jpg" som jeg ønsker.

Skal man ikke lave noget med VirtualHost eller noget andet for at kunne gøre dette??
Avatar billede showsource Seniormester
03. august 2007 - 13:46 #3
Du kan måske bruge dirname()

$dir = dirname($_SERVER["PHP_SELF"]);

if($dir == "\\") {
$dir = "/";
}


echo"<img src=\"". $dir ."/imgs/billede.jpg\">
Avatar billede showsource Seniormester
03. august 2007 - 13:47 #4
Hov,
if($dir == "\\") {
$dir = "";
}
Avatar billede mcardle Nybegynder
03. august 2007 - 16:09 #5
Men jeg kan ikke forstå det er et problem, du kan jo bare lade være med at skrive en (/) inden du begynder med stien.

Eks.:
<img src="imgs/billeder1.jpg">

Du skriver du selv du vil lave en relativ sti fra roden og det gør du nu.

Hvis du skriver "http://localhost/test/imgs/billeder1.jpg", så er det jo ikke en relativ sti. ;o)

//mcardle
Avatar billede yHec Novice
03. august 2007 - 20:40 #6
$_SERVER['DOCUMENT_ROOT'].


Den finder hostens rod. Så kan du bare tilføje derefter, så skulle jeg da mene, at det burde virke...

/y
Avatar billede or.han Nybegynder
03. august 2007 - 21:48 #7
y>> Jeg vil ikke have en PHP-løsning. Mere en Apache/.htconf løsning.

mcardle>> Okey jeg prøver lige at forklare igen.
Jeg er eksempelvis i filen "localhost/test/includes/test.php". Lad os kalde bare filen test.php

Jeg har en mappe med billeder: "localhost/test/imgs"

Så i test.php vil jeg vise et billede. Det kan jeg gøre således: <img src="../imgs/billede1.jpg" />

Men problemet er at test.php egentlig bliver inkluderet ind i en anden fil: "localhost/test/index.php".

Så derfor bliver jeg nødt til at skrive <img>-taggets src således: src="/test/imgs/billede1.jpg".

Fint nok, men når jeg så uploader mit PHP-projekt til nettet, så er det egentlig indholdet af "localhost/test" mappen. Lad os sige at internetsiden er "www.test.dk". Nu vil det med billedet ikke virke, fordi den peger på "www.test.dk/test/imgs/billede1.jpg" hvor den egentlig burde pege på "www.test.dk/imgs/billede1.jpg".

Det jeg så vil have, er at når jeg på min egen computer skriver "/imgs/billede1.jpg", så det egentlig skal svare til "localhost/test/imgs/billede1.jpg" og ikke "localhost/imgs/billede1.jpg". I httpd.conf kan jeg se at "DocumentRoot" er sat til "C:/xampp/htdocs", men kan jeg ikke på en eller anden måde "overskrive" dette så roden bliver "C:/xampp/htdocs/test".

Hmm lidt svært at forklare...
Avatar billede mcardle Nybegynder
03. august 2007 - 22:31 #8
Jeg forstår godt hvad du mener, men det kommer også til at passe.

Hvis du linker relativt, så vil det altid passe. Om du smider det ind i 40 mapper, eller du smider det ude i roden.

Brug:
/ = start i roden.
./ = der hvor du er nu.
../ = gå en tilbage.
mappens_navn = gå ind i mappens_navn fra den mappe du er i.
Avatar billede or.han Nybegynder
03. august 2007 - 23:24 #9
Du forstår det vist ikke. Jeg spurgte her: http://www.eksperten.dk/spm/790206

Det er løst nu.
Avatar billede mcardle Nybegynder
04. august 2007 - 14:34 #10
Okay, godt du fik det løst. ;o)

Det er den vigtigste.

//mcardle
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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