FAQ |
Kalender |
2006-05-06, 00:13 | #1 | ||
|
|||
Mycket flitig postare
|
Måste vara min första post på den här forumavdelningen och det gäller en php fråga.
Frågan gäller relativa sökvägar i en katalog. Jag har en hemkatalog och en underkatalog. Från hemkatalogen lägger jag till den här satsen. <?php require("./LinkPageAuto/list.php"); ?> I underkatalogen där list.php ligger så är skriptet definierat att ha en relativ sökväg och den borde strunta i var ifrån jag inkluderar filen. Problemet är att den inte struntar i det så jag måste byta följande: $fd = fopen ("list.txt", "r"); till $fd = fopen ("./LinkPageAuto/list.txt", "r"); Hur kan man skriva så att skriptet tar hand om detta oavsett varifrån jag inkluderar filen? |
||
Svara med citat |
2006-05-06, 00:24 | #2 | ||
|
|||
Supermoderator
|
Citat:
__________________
Full-stack developer, free for smaller assignments |
||
Svara med citat |
2006-05-06, 00:41 | #3 | ||
|
|||
Mycket flitig postare
|
echo $_SERVER['DOCUMENT_ROOT'];
blir bara '/' Den verkar inte användas. Vilka andra metoder kan jag testa? |
||
Svara med citat |
2006-05-06, 01:07 | #4 | ||
|
|||
Supermoderator
|
Citat:
__________________
Full-stack developer, free for smaller assignments |
||
Svara med citat |
2006-05-06, 12:38 | #5 | ||
|
|||
Mycket flitig postare
|
Blir samma sak..
|
||
Svara med citat |
2006-05-06, 12:50 | #6 | ||
|
|||
Supermoderator
|
Kör phpinfo och se vad det står där.
__________________
Full-stack developer, free for smaller assignments |
||
Svara med citat |
2006-05-06, 13:17 | #7 | ||
|
|||
Nykomling
|
Det här med sökvägar i PHP är en konst i sig att lära sig bemästra
Det hela utgår ifrån din cwd (current working directory). Kör du t.ex. index.php och sedan includear som du säger <?php require("./LinkPageAuto/list.php"); ?> så är din cwd / När det gäller include() och require() söker de först efter filer i din include_path relativt din cwd (kolla vilken din include_path är med ini_get('include_path')). Sedan söker de efter filer i include_path relativt det script som körs (list.php i ditt fall). Om du kör med ./ eller ../ för den delen kollar den bara relativt efter cwd. resource fopen ( string filename, string mode [, bool use_include_path [, resource zcontext]] ) fopen() är dock en annan historia. Den kör inte som standard efter include_path alls (letar endast i cwd). Man kan specifiera parametern use_include_path till true så kör den efter include_path också, då kan du lägga till din katalog i include_path så har du löst problemet, det gör du med: Kod:
$path = '/LinkPageAuto/'; set_include_path(get_include_path() . PATH_SEPARATOR . $path); Kod:
$fd = fopen (dirname(__FILE__) . "/list.txt", "r"); |
||
Svara med citat |
2006-05-06, 13:36 | #8 | ||
|
|||
Mycket flitig postare
|
Provad detta och det fungerade fin fint
echo __FILE__ ; Hoppas nu att detta funkar hos de flesta webbhotell som stödjer php. Funderar på att göra små skript i framtiden, skicka upp till några skriptsajter och se till att använda __FILE__ så att andra slipper detta krångel . Kanske kan ge några nöjda besökare. |
||
Svara med citat |
2006-05-06, 14:00 | #9 | ||
|
|||
Supermoderator
|
Vet inte vad för webserver du använder? Uppenbarligen finns inte $_SERVER['DOCUMENT_ROOT'] på IIS, finns __FILE__ oavsett webserver?
Använder man en PHP-version som är äldre än PHP 4.0.2 så bör man hur som helst inte använda sig av __FILE__ då den ibland ger en relativ sökväg till filen.
__________________
Full-stack developer, free for smaller assignments |
||
Svara med citat |
2006-05-06, 14:34 | #10 | ||
|
|||
Mycket flitig postare
|
Jobbig problem det här
Ännu jobbigare att få länkar att lira rätt med skriptet. Har försökt att skriva här vad jag gör och raderat det för att det finns inget vettigt sätt att förklara problemet med text. *Svettas* Gjorde en lösning hur som helst. Grundtanken är att använda så lite kod som möjligt i huvudwebbsidan i rotkatalogen och sedan använda olika komponenter i underkataloger. Om jag t.ex vill ha flera skriptade länklistor så kopierar jag en mapp och gör några små redigeringar i huvudwebbsidan. (med massa problem som följd ) |
||
Svara med citat |
Svara |
|
|