webForumDet fria alternativet

PHP_SELF fast nåt annat...

10 svar · 329 visningar · startad av greymane

greymaneMedlem sedan juli 2001711 inlägg
#1

Ja har man dålig fantasi blir det dåligt ämne...

jag undrar om det finns nån variabel som (likt PHP_SELF) innehåller sökvägen till en aktuell fil. grejen e den att jag vill inte behöva skriva in hela adressen till include(). jag vill kunna flytta sidorna till olika servrar utan att behöva göra om sökvägarna.

BatboyMedlem sedan jan. 20001 006 inlägg
#2

http://www.php.net/manual/en/language.variables.predefined.php

De flesta är Apache-specifika, använder du någon annan server är det inte säkert att de fungerar.

/j

MatteMedlem sedan aug. 20002 975 inlägg
#3

_FILE_ ger dig filnamn inklusive sökväg. För att bara få ut sökväg:

$sokvag = dirname (__FILE__);

Men detta ger dig sökvägen till den katalog du står i, och ligger include-filen i samma katalog behöver du inte ange sökvägen utan det räcker med filnamnet.
Personligen brukar jag lägga sökvägar som en variabel i en include-fil, som jag sedan inkluderar på aktuell sida. Då är det bara en fil som behöver uppdateras om jag flyttar mina script.

------------------
Funktion är vackert

patrickpollyMedlem sedan mars 2001190 inlägg
#4

Förutsatt att du har samma katalogstruktur på båda servrarna fungerar följande kod:

<? include($DOCUMENT_ROOT . "/includes/foo.php") ?>

//Patrik

------------------
Patrik Lindgren
Alxnet.se - gratis webbverktyg

Alxhost - Webbhotell

jockelwMedlem sedan sep. 200254 inlägg
#5

det var nog rätt tro ja så! Tack så mycke!

jockelwMedlem sedan sep. 200254 inlägg
#6

Ha nu testat och de funkade inte riktigt som ja hade hoppas. som om ja kör de på min dator så skriver den inte ut ip adress eller dns namnet utan den skriver ut tex. c:\http_root\ .
Kan man skriva någe annat?

jarvkloMedlem sedan juli 20013 378 inlägg
#7

Nej PHP på Win32 sätter inte alltid in något värde på $DOCUMENT_ROOT automatiskt, som man skulle kunna önska... Speciellt inte under IIS som jag ibland måste köra...

Prova att använda följande funktion istället för $DOCUMENT_ROOT - den funkar på Win32 och skall såvitt jag förstått funka på *u*x också

function getDocumentRoot()
{
    global $DOCUMENT_ROOT;
    if ( !isset($DOCUMENT_ROOT) ) {
        if ( isset($_SERVER['PATH_TRANSLATED']) && isset($_SERVER['PATH_INFO']) ) {
            $pt = str_replace("\\\\", "/", $_SERVER['PATH_TRANSLATED']);
            $l = strlen($pt) - strlen($_SERVER['PATH_INFO']);
            $DOCUMENT_ROOT = substr($pt, 0, $l);
        }
    }
    return $DOCUMENT_ROOT;
}

och patrickpollys exempel skulle då bli:

<? include(getDocumentRoot() . "/includes/foo.php") ?>

[r] :r Hmmm.. Såg just att jag slarvläste ditt senaste inlägg... men funktionen kanske kan vara till nytta för någon annan trots min missuppfattning :r [/r]

netfeedMedlem sedan mars 2001593 inlägg
#8

vad använder man document_root till?

MatteMedlem sedan aug. 20002 975 inlägg
#9

netfeed skrev:

vad använder man document_root till?

T.ex om man använder absoluta sökvägar och vill slippa skriva hela sökvägen.
Passa dessutom bra om man vill flytta kod mellan olika domäner/maskiner/internetleverantörer utan att skriva om koden.

greymaneMedlem sedan juli 2001711 inlägg
#10

hur kan det komma sig att min drygt ett år gamla tråd har blivit akutell igen? :)

MatteMedlem sedan aug. 20002 975 inlägg
#11

greymane skrev:

hur kan det komma sig att min drygt ett år gamla tråd har blivit akutell igen? :)

Anledningen kan nog hämtas i dem här tråden: http://www.webforum.nu/showthread.php?s=&threadid=53161

Antingen hittades ny (gammal) tråd om liknande ämne, eller så är det ett misslyckat försök att hitta till tråden ovan som har ett liknande namn.

133 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)