Gå til innhold

require_once error og server-innstillinger


Anbefalte innlegg

require_once error . . . finner ikke filen etc. begynner å bli en velkjent feilmelding.

På localhost går det bra, og også på et par servere, men på andre servere får en altså require_once-feilmelding.

Når jeg går i filen som feilmeldingen henviser til og kikker, ser jeg at require_once url'en er skrevet på denne måten:

1:) require_once("{$config['document_root']}{$config['maindir']}{$config['mappenavn']}filnavn.php");

 

Ved å endre til den "normale" måten å skrive det på . . .

2:) require_once("./mappenavn/filnavn.php");

. . . så finner serveren filen og skriptet kjører videre som normalt.

 

Oppstår disse feilmeldingene på grunn av server-innstillinger, og i så fall hvilke?

Kunne vært greit å vite den dagen jeg leier serverplass slik at jeg kan sjekke på forhånd hvordan den aktuelle serveren er satt opp og hvilke innstillinger jeg eventuelt får tilgang til.

Lite hyggelig å betale for et år på en server hvor de ikke tar telefonen, ikke svarer på mail og ikke er villige til å endre innstillingene.

 

En ting til: Hva er poenget med å skrive url'er som i eksempel 1:) istedenfor eksempel 2:) ???

Lenke til kommentar
Videoannonse
Annonse

Metode 1 funker sannsynligvis ikke fordi $config-variablen ikke settes slik den skal. Hvorvidt det har med serverinnstillinger å gjøre er vanskelig å si når du gir oss så lite. Fordelen med metode 1 er for øvrig at det gjør skriptet litt mer fleksibelt i forhold til endring av mappestruktur osv., du slipper å skrive om mange filer dersom en mappe endrer navn.

Lenke til kommentar
1:) require_once("{$config['document_root']}{$config['maindir']}{$config['mappenavn']}filnavn.php");

Antar at mappestrukturen på serveren er litt forskjellig fra din PC, spesielt hvis det er windows på PCen din og linux på serveren.

  1. Sjekk hvilken mappe filene er i på serveren (pwd i linux).
  2. var_dump $config og se hva som er ulikt.
  3. Gjør nødvendige endringer.

Lenke til kommentar
1:) require_once("{$config['document_root']}{$config['maindir']}{$config['mappenavn']}filnavn.php");

Antar at mappestrukturen på serveren er litt forskjellig fra din PC, spesielt hvis det er windows på PCen din og linux på serveren.

  1. Sjekk hvilken mappe filene er i på serveren (pwd i linux).
  2. var_dump $config og se hva som er ulikt.
  3. Gjør nødvendige endringer.

 

Dette har jeg altså ikke greie på annet enn at jeg forstår at det er noe kluss med hvor det forventes at filene befinner seg. Jeg har endret en del av require_once søkebanene til "normalt" format, og da finner skriptet filene, men jeg kan ikke endre alle disse i 750 filer, det sier seg selv. Hvis jeg skal tippe, så vil jeg tro at det som i så fall må endres er en eller annen definisjon på plasseringen av rotmappen, siden den er utgangspunktet for alle andre mapper og filer. Hvor en gjør dette er over min forstand, men siden install.php begynner med å kalle opp functions.php, så burde det være i den filen en finner en eller annen definisjon på hvor rotmappen er . . . eller er jeg helt på vidda her?

Uansett,-i functions.php finner en følgende:

## Document Root

$config['document_root'] = $_SERVER['DOCUMENT_ROOT'];

if (strrpos($config['document_root'], "/") == strlen($config['document_root']) - 1)

{

$config['document_root'] = substr($config['document_root'], 0, strlen($config['document_root']) - 1);

$config['document_root'] = str_replace($config['maindir'], "", $config['document_root']);

 

Begynner jeg å nærme meg, eller er dette helt på trynet?

 

( var_dump $config returnerer forøvrig NULL ).

Lenke til kommentar
Hva står det i feilmeldingen?

Er faktisk mulig at den ikke finner siden som setter $config

 

Filen som setter $config er config.php, og linjene hvor dette skjer er som følger:

 

// Your site address (no ending slash, no directories)

$config['siteaddress'] = "http://emtor.007sites.com";

$config['ssldomain'] = "https://emtor.007sites.com";

 

// Main Directory (with begining slash and ending slashes)

$config['/cpCommerce/'] = substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/') + 1);

$config['cpCommerce'] = substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/') + 1);

 

Her er feilmeldingen:

Warning: require_once() [function.require-once]: Unable to access /www/cpcommerce/language/english.php in /www/007sites.com/e/m/t/emtor/htdocs/cpcommerce/_functions.php on line 67

 

Rekkefølgen er slik når en forsøker å kjøre index.php:

index.php kaller opp _functions.php som igjen kaller opp en språkfil,-english.php.

 

Det er tydelig at $config ikke er riktig satt, og mange har da også dette problemet.

Løsningen i følge opphavsmannen av skriptet, er å legge følgende linje i toppen av config.php:

$_SERVER['DOCUMENT_ROOT'] = str_replace( '\\', '/', substr($_SERVER['SCRIPT_FILENAME'], 0, 0-strlen($_SERVER['PHP_SELF']) ) );

 

Bingo . . . problemet løst,-siden laster, men en får headers already sendt-error isteden.

Jeg la da linjen til lenger nede i skriptet, rett over Main directory-linjene. Nå laster sidene uten noen feilmeldinger i det hele tatt.

 

Det er altså tydelig at config.php blir funnet, siden det funker å endre denne.

Likeså blir _functions.php også funnet, siden filen blir nevnt i feilmeldingen.

 

På localhost har jeg ingen problemer, og heller ikke på den ene av serverne jeg har testet, men på to andre servere får en altså problemer.

 

Det som er viktig her, er at skriptene faktisk funker og de trenger ikke endres bare config-filen blir riktig konfiguret. Den siste "løsningen" som rettet feilen gjelder bare visse servere. Det er dette jeg etterspør: Hva skal jeg spørre web-host om før jeg betaler dem penger for leie av plass? Er det sånn at noen servere ikke støtter måten skriptene jeg har henviser til mapper og filer? Da er det jo i så fall det jeg må spørre om.

Endret av emtor
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...