Avatar billede frederikschack Nybegynder
27. december 2008 - 23:57 Der er 23 kommentarer og
1 løsning

include fra andet directory

Hej,

Når jeg laver en include fra samme directory, så fungerer funktionerne i den inkluderede fil fint. Når jeg laver en include fra et andet directory, hvad enten det er over eller under, så inkluderer den også denne fint, men funktionerne kan ikke bruges. Jeg får følgende besked:

"Fatal error: Call to undefined function something() in C:\Web\x\bin\config.php on line 4"

Den inkluderede fil kan fint afvikle kode, som ikke ligger i funktionerne, men php fortolkeren siger at funktionerne ikke er definerede.

Hvordan laver man en include fra et andet directory, så funktionerne (function) virker?

Jeg benytter PHP 5 og Apache 2.2, på en XP maskine.
Avatar billede mcardle Nybegynder
28. december 2008 - 00:04 #1
Hvordan inkluderer du dine filer?

Du kan skrive:
include("../config.php");

eller:

include("conf/config.php");

//mcardle
Avatar billede erikjacobsen Ekspert
28. december 2008 - 00:04 #2
Det du skriver giver ingen mening. Man kan selvfølgelig sagtens inkludere filer fra andre kataloger, og bruge de deri definerede funktioner. Du må lave en fejl et sted.
Avatar billede mcardle Nybegynder
28. december 2008 - 00:06 #3
Du kan også starte fra roden hver gang:

eks.:
include("/config.php");

eller:

include("/conf/config.php");

//mcardle
Avatar billede frederikschack Nybegynder
28. december 2008 - 00:07 #4
Jo, men hvor laver jeg en fejl. Den kan fint finde include filerne begge steder, men bare ikke bruge funktionerne hvis de ligger i en anden folder.

Jeg inkluderer dem sådan her:
<?php
include 'http://' . $_SERVER["SERVER_ADDR"] . "/cfgref.php";
include 'http://' . $_SERVER["SERVER_ADDR"] . '/x/bin/db/test.php';
something();
Avatar billede erikjacobsen Ekspert
28. december 2008 - 00:07 #5
Du kan ikke inkludere php-filer med http:// foran. Gør som mccardle skriver.
Avatar billede frederikschack Nybegynder
28. december 2008 - 00:08 #6
Er det fordi den betragter det som en ekstern reference?
Avatar billede mcardle Nybegynder
28. december 2008 - 00:08 #7
Jepper... :o)
Avatar billede mcardle Nybegynder
28. december 2008 - 00:09 #8
Damn folk er hurtige her... Hehe

//mcardle
Avatar billede erikjacobsen Ekspert
28. december 2008 - 00:09 #9
Nej, fordi der ikke er PHP-kode tilbage i resultatet af sådan en include. Prøv nu forslaget.
Avatar billede frederikschack Nybegynder
28. december 2008 - 00:10 #10
Hvis jeg gør som mcardle siger, så får jeg følgende fejl:

Warning: include(/cfgref.php´) [function.include]: failed to open stream: No such file or directory in C:\Web\x\bin\config.php on line 2
Avatar billede frederikschack Nybegynder
28. december 2008 - 00:11 #11
Ups:
Warning: include(/cfgref.php) [function.include]: failed to open stream: No such file or directory in C:\Web\Cynthesis\bin\config.php on line 2
Avatar billede erikjacobsen Ekspert
28. december 2008 - 00:12 #12
Du skal angive en korrekt sti.
Avatar billede frederikschack Nybegynder
28. december 2008 - 00:13 #13
Og det er altså med:
include '/cfgref.php';
Avatar billede frederikschack Nybegynder
28. december 2008 - 00:13 #14
Ja, men hvordan gør jeg det til rodfolderen af webhotellet?
Avatar billede frederikschack Nybegynder
28. december 2008 - 00:14 #15
Jeg ved ikke nødvendigvis hvor mange trin der er ud til rodfolderen, så derfor skal jeg have et absolut udgangspunkt.
Avatar billede erikjacobsen Ekspert
28. december 2008 - 00:15 #16
Men
  include '/cfgref.php';
indholder ikke den korrekte sti. Måske - vi ved det ikke - er det i retning af
  include 'C:/Web/x/cfgref.php';
Avatar billede mcardle Nybegynder
28. december 2008 - 00:16 #17
Med en / foran det hele... Så starter den altid ved roden...

//mcardle
Avatar billede erikjacobsen Ekspert
28. december 2008 - 00:17 #18
"Så starter den altid ved roden" - den vil starte ved roden af filsystemet, ikke ved roden af websitet.
Avatar billede mcardle Nybegynder
28. december 2008 - 00:19 #19
:o)
Avatar billede frederikschack Nybegynder
28. december 2008 - 00:19 #20
<?php
include $_SERVER['DOCUMENT_ROOT'] . '/cfgref.php';
include $_SERVER['DOCUMENT_ROOT'] . '/x/bin/db/test.php';


virker :O)

Smid et svar begge to :o)
Avatar billede erikjacobsen Ekspert
28. december 2008 - 00:20 #21
Ingen point til mig, tak.

Man kan, sjældent, opleve suspekte serveropsætninger, hvor $_SERVER['DOCUMENT_ROOT'] ikke giver det forventede.
Avatar billede mcardle Nybegynder
28. december 2008 - 00:20 #22
Kanon. Jeg har smidt et xD
Avatar billede frederikschack Nybegynder
28. december 2008 - 00:21 #23
Erik, smid et svar :o)
Avatar billede frederikschack Nybegynder
28. december 2008 - 00:21 #24
Jo, Erik, f.eks. med Abyss :o)
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