Avatar billede fatass Nybegynder
19. oktober 2003 - 02:55 Der er 12 kommentarer og
1 løsning

include en fil fra et bestemt sted på iis

På en apacheserver kan jeg gøre sådan her:

include($_SERVER["DOCUMENT_ROOT"] . "/test/test.php");

når jeg skal include en fil fra et hvilket som helst sted på siden.
Men det virker åbenbart ikke på iss. Nogen der ved hvordan man klarer den på iis?
Avatar billede fatass Nybegynder
19. oktober 2003 - 03:01 #1
Jeg hoster ikke selv siden, så jeg kan ikke pille ved noget på serveren...
Avatar billede erikjacobsen Ekspert
19. oktober 2003 - 08:43 #2
$_SERVER["DOCUMENT_ROOT"] peger ikke nødvendigvis på dit katalog. Prøv
at skrive den ud først.
Avatar billede tipsen Nybegynder
19. oktober 2003 - 09:35 #3
Noget der ofte varierer er om $_SERVER["DOCUMENT_ROOT"] indeholder en afsluttende "/" eller ej (trailing slash)
Avatar billede danisher Nybegynder
19. oktober 2003 - 14:40 #4
På en IIS, kan det en være fordel at bruge funktionen realpath();

include (realpath("./test/") . "/test.php");

/Danisher
Avatar billede fatass Nybegynder
19. oktober 2003 - 15:31 #5
$_SERVER["DOCUMENT_ROOT"] peger ingen steder hen. Hvis jeg kigger på phpinfo() er den slet ikke på listen.

Hvis jeg bruger realpath() giver det problemer når jeg står i et andet bibliotek.
F.eks. vil jeg gerne include /test/test.php fra /etandetsted/index.php.
Så vil den prøve at include /etandetsted/test/test.php
Avatar billede sukos Juniormester
20. oktober 2003 - 12:21 #6
Nok fordi ver. af PHP er mindre end 4.1.0

Prøv at bruge
echo $HTTP_SERVER_VARS["DOCUMENT_ROOT"];
Avatar billede fatass Nybegynder
20. oktober 2003 - 13:37 #7
Nej det er v 4.2.0

if (!isset($_SERVER[DOCUMENT_ROOT])) {echo"Variablen er ikke sat";}

oventstående beviser at variablen slet ikke er sat, så jeg skal bruge noget andet.

Jeg bøvler lidt med en løsning, hvor jeg bruger $_SERVER["PATH_TRANSLATED"] (som giver den fulde sti)og så fjerne $_SERVER["PHP_SELF"]. Derved vil jeg få en sti til webroot, som jeg kan bruge til include.

Jeg kunne bare skrive stien manuelt ind, men jeg skal bruge en løsning, hvor jeg kan teste det jeg laver lokalt og så uploade det til serveren uden at ændre noget. Det giver bare lidt problemer, når jeg kører apache lokalt og serveren iis...

Når jeg får lavet noget der virker skriver jeg det her, hvis der skulle være andre der er interesserede...
Avatar billede sukos Juniormester
20. oktober 2003 - 14:12 #8
echo $_SERVER["DOCUMENT_ROOT"];
og ikke
echo $_SERVER[DOCUMENT_ROOT];
Avatar billede fatass Nybegynder
20. oktober 2003 - 14:40 #9
ja naturligvis. Det var noget sjusk.

Dog ændrer det ikke ved resultatet...
Avatar billede danisher Nybegynder
20. oktober 2003 - 14:51 #10
Må vi se lidt mere kode?
Avatar billede fatass Nybegynder
20. oktober 2003 - 14:57 #11
Hvilken kode tænker du på? Kode der viser mit problem eller kode der viser den løsning jeg snart laver færdig ;)
Avatar billede danisher Nybegynder
20. oktober 2003 - 15:05 #12
Hmm
Jeg ville stadig mene at du ville skulle bruge 2 forskellige løsninger, på grund af forskellen i PHP's opførsel på henholdsvis IIS'en og apache...

Men på IIS'en vil jeg anbefale:
include (realpath("./test/") . "/test.php");

og på apache ville jeg bruge
include($_SERVER["DOCUMENT_ROOT"] . "/test/test.php");

Mvh
Mig
Avatar billede fatass Nybegynder
20. oktober 2003 - 16:02 #13
Som jeg har tidligere har skrevet virker realpath() ikke når jeg står i et andet bibliotek. Derfor kan jeg ikke acceptere dit svar.
Jeg har stykket denne løsning sammen, som virker på både iis og apache.

$fuld =  $_SERVER["PATH_TRANSLATED"];
$vaek =  $_SERVER["PHP_SELF"];

$fuld_antal = strlen($fuld);
$vaek_antal = strlen($vaek);

if (strstr($_SERVER["SERVER_SOFTWARE"], "IIS")){
    $fuld = ereg_replace("\\\\\\\\", "/", $fuld);
    $fuld_antal = strlen($fuld);
}

$antal_fjernes = $fuld_antal - $vaek_antal;

$incsti = substr($fuld, 0, $antal_fjernes);
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