08. januar 2011 - 09:44 Der er 3 kommentarer og
1 løsning

System variable for path til fil

Jeg har denne filstruktur:

admin/create.php
lib/utilities.php
area.php
o.s.v.

Hvis jeg vil inkludere utilities i area koder jeg
include("lib/utilities.php");
hvorimod hvis jeg vil inkludere utilities i admin/create er jeg noedt til at sige
include("../lib/utilities.php");

For at goere det 'generisk' har jeg oprettet en $_SESSION['path'] saaledes at i area er $_SESSION['path'] = '' hvorimod i create er $_SESSION['path'] = "../".  Efter i begge filer at have defineret $path = $_SESSION['path'] kan jeg i begge filer inkludere saaledes:

$includepath = $path . "lib/utilities";
include("$includepath");

og det virker udemaerket.  Men det er lidt 'tungt.' Det ville vaere smartere hvis jeg kunne bruge en forud defineret variabel som 'ved' at create.php saa at sige ligger ../ lavere end area.php.  Jeg har proevet at rode med pathinfo() som rummer mange ting men ikke denne, og jeg har yderligere googlet rundt uden at finde en loesning.

Findes der en saadan variabel eller anden php loesning?
Avatar billede erikjacobsen Ekspert
08. januar 2011 - 10:05 #1
Det kan være afhængig af opsætningen på webserveren, men formentlig kan du finde roden på dit webhotel i:  $_ENV['DOCUMENT_ROOT']
08. januar 2011 - 12:04 #2
erikjacobsen, variabelen du gav virker paa min webhost (one.com) saa jeg faar roden.

Men det jeg var ude efter var en funktion/variabel der, saa at sige, giver forskellen mellem filers sti.  Hvis, i min fil-struktur, vi definerer at area.php er paa basis niveau, saa er forskellen mellem area.php og area.php nul saa for area.php er $_FORSKEL == ''.  Forskellen mellem area.php og create.php er ../, saa for create.php er $_FORSKEL == '../'

Saa to spoergsmaal:  (a) Er det til at fatte hvad jeg siger?  (b) Findes saadanne muligheder i php? ( (c) eller er det min fantasi der loeber af med mig?)
Avatar billede erikjacobsen Ekspert
08. januar 2011 - 12:09 #3
Jeg ved om det du gerne vil have findes, men det jeg vil gøre i tilsvarende situation, sådan ca:

  include($_ENV['DOCUMENT_ROOT'] . '/lib/utilities.php');

Så skal man skrive det samme uanset hvor man er.
08. januar 2011 - 14:39 #4
Saa ikke alene svarede du paa det jeg burde have spurgt om (den rette paradigm er naturligvis at definere hvor lib/utilities.php sidder, ikke for de filer man vil inkludere at holde rede paa, fil for fil, hvor de sidder i forhold til lib/utilities.php,) det virker ogsaa.  Tak for hjaelpen.  (Det foeles lidt saert saa at tage points tilbage, men saadan foretraekker du det aabenbart.)
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

IT-JOB

Capgemini Danmark A/S

Management Consultant

Netcompany A/S

Test Consultant

Capgemini Danmark A/S

SAP Engagement Manager

Politiets Efterretningstjeneste

SOC-analytikere i PET