Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  13 1264
Hei,

Holder på å lærer meg web design, og sliter for tiden litt med php-includes.
Jeg har valgt å lage en template vha av php-includes, der includene linker til "template-koden" som til sammen utgjør malen for nettsiden min.

For å illustrere det jeg sliter med, tenkte jeg å gi dere et eksempel:

La oss si at man har følgdende kode i en template.php:

Kode

<?php include"directory/file.php" ?>
I file.php har vi følgende kode:

Kode

<?php include"directory/another_directory/someFile.php" ?>
I someFile.php finner man html-koden man referer til.

Koden til file.php blir så vidt meg forstått slik fordi alle paths som blir refert til på vei til someFile.php er relative til filen som orginalt kaller dem.

Problemet mitt nå er at jeg ønsker å ha en mappe(newFolder) i samme directory som template.php, der jeg har en fil som heter newFile.php.
I newFile.php ønsker jeg å include samme filer som det jeg gjøre i template.php

fil.php inne i mappen ser jeg for meg da må se noe slik ut:

Kode

<?php include"../directory/file.php" ?>
Her kommer problemet mitt:
Jeg ser for meg at denne koden finner file.php, men at den ikke klarer å utføre koden inne i file.php(include"directory/another_directory/someFile.php"), siden denne pathen blir feil, siden dette ikke blir riktig path relativt til newFile.php.

Merker at dette problemet ble ganske vanskelig å forklare. Her har dere et bilde over mappestrukturen jeg har prøvd å beskrive:
Oversikt
Oversikt2

Er det noen av dere som er i stand til å forstå problemet jeg prøver å beskrive, og samtidig hjelpe meg med en løsning?
Har samme problem, prøver å importere en fil som ligger i en mappe "under" den mappen .php filen ligger i.
Eksempel:

/web/mappe1/ønsker_å_importere_TIL_denne.php
/web/ønsker_å_importere_denne.php
Hva med å sette show_errors verdien i php.ini til On.

php.ini

Kode

show_errors = Off (Endre Off til On)
Ved å endre denne til On, så vil den vise feilene dere gjør.
Sist endret av 0xFF; 29. juni 2012 kl. 16:46.
Trådstarter
Sitat av 0xFF Vis innlegg
Hva med å sette show_errors verdien i php.ini til On.

php.ini

Kode

show_errors = Off (Endre Off til On)
Ved å endre denne til On, så vil den vise feilene dere gjør.
Vis hele sitatet...
Burde kanskje nevnt det til å begynne med, men dette har jeg allerede slått på. Slik jeg tolker feilmelding, blir problemet det jeg prøver å beskrive:

Jeg ser for meg at denne koden finner file.php, men at den ikke klarer å utføre koden inne i file.php(include"directory/another_directory/someFile.php"), siden denne pathen blir feil, siden dette ikke blir riktig path relativt til newFile.php.
Vis hele sitatet...
Kopier feilkode meldingen og legg den ut her, mye enklere å fastslå problemet.
Trådstarter
Warning: include() [function.include]: Failed opening 'includes/overall/oHeader.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /web/folk/andrroy/Hjemmeside/tottenham/head.php on line 1
Vis hele sitatet...

Dette er feilmeldingen jeg får fra nettsiden min. Denne meldingen får jeg fordi at pathen 'includes/overall/oHeader.php' blir feil, sett fra plasseringen til filen spillere.php som koden kjøres i.
Den vil prøve å includere:

Kode

/web/folk/andrroy/Hjemmeside/tottenham/includes/overall/oHeader.php
Hvis filen ligger her:

Kode

web/folk/andrroy/Hjemmeside/includes/overall/oHeader.php
Så må du bruke

Kode

include ("../includes/overall/oHeader.php");
Også viktig å sjekke store og små bokstaver, og at mappe/filnavn er riktig skrevet.

EDIT: Med "../", så går du tilbake en mappe.
Sist endret av 0xFF; 29. juni 2012 kl. 17:18.
Trådstarter
Sitat av 0xFF Vis innlegg
Den vil prøve å includere:

Kode

/web/folk/andrroy/Hjemmeside/tottenham/includes/overall/oHeader.php
Hvis filen ligger her:

Kode

web/folk/andrroy/Hjemmeside/includes/overall/oHeader.php
Så må du bruke

Kode

include ("../includes/overall/oHeader.php");
Også viktig å sjekke store og små bokstaver, og at mappe/filnavn er riktig skrevet.

EDIT: Med "../", så går du tilbake en mappe.
Vis hele sitatet...
Takk for forslaget, men det er her problemet mitt ligger.
Jeg har laget en mal for nettsiden min som blir utgjort av web/folk/andrroy/Hjemmeside/includes/overall/oHeader.php og web/folk/andrroy/Hjemmeside/includes/overall/oFooter.php.

Problemet mitt nå er at jeg står med en fil i web/folk/andrroy/Hjemmeside/tottenham, og prøver å benytte meg av denne malen.
Både oHeader.php og oFooter.php peker til includer andre php-filer i web/folk/andrroy/Hjemmeside/includes/ og pathen de to filene includer fra, blir feil i forhold til php-filen i tottenham-mappen.

Spørsmålet mitt er derfor; hvordan kan jeg include php-filer der pathen jeg oppgir er relativt til mappen php-filen som includer ligger i, og ikke php-filen som i utgangspunktet kaller på de andre filene.
..Hvis det gir mening. Forstår du hva jeg prøve å spør deg om da?
Hvilket OS kjøres på serveren?
Altså du har 3 filer:

/web/folk/andrroy/Hjemmeside/tottenham/navnpaafilen.php
| - > Inkluderer /web/folk/andrroy/Hjemmeside/includes/overall/oHeader.php
| - > Inkluderer /web/folk/andrroy/Hjemmeside/includes/overall/oFooter.php

Korrekt?

Ja, da kan du bruke den metoden jeg viste deg i sted. Ved å bruke ../ så går du opp ett hakk fra tottenham mappen til mappen Hjemmeside.

Kode

include ("../includes/overall/oHeader.php");
include ("../includes/overall/oFooter.php");
Trådstarter
Bruk av ../ hjelper ikke, siden path når disse filene blir includet, er gitt utifra filen som først kaller på de andre filene. Dvs at templaten min per nå, kun fungerer hvis filen som includer oHead.php/oFoot.php ligger i web/folk/andrroy/Hjemmeside.

Forslaget du kommer med funker altså til å nå oHeader.php/oFooter.php, men siden disse videre kaller filer fra web/folk/andrroy/Hjemmeside/includes/ blir denne pathen feil relativt til utgangspunktet(tottenham-mappen), og dette resulterer i at filen ikke blir funnet.

oHeader.php inneholder eksempelvis
<?php include "includes/head.php"; ?>

Sitat av nudo Vis innlegg
Hvilket OS kjøres på serveren?
Vis hele sitatet...
Kjører Debian
Sist endret av thapope; 29. juni 2012 kl. 17:41.
Trådstarter
Sitat av nudo Vis innlegg
Vis hele sitatet...


Basedir er ikke satt nei, men hvordan vil det eventuelt hjelpe da? Forstår jeg det rett hvis dette gjør "hoved-mappen" til nettsiden min til root("/") directory, og at jeg bør spesifisere hele stier (eks. /includes/overall/oFooter.php)?
▼ ... over en uke senere ... ▼
Husk filene kan ha store / små bokstaver...beste er å alltid holde seg til lowercase.(småbokstaver)