[PHP] Raar include probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Anoniem: 6032

Topicstarter
Ik heb een probleem met het ontwikkelen van een site. Ik ontwikkel de website eerst lokaal en upload deze vervolgens naar de hosting. Hier ontstaat het probleem.
Lokaal werkt alles goed, alleen op de hosting krijg ik een rare fout dat een bepaalde functie niet gevonden kan worden:

PHP:
1
Fatal error: Call to undefined function: checkifuserisloggedin() in index.php on line 25


De betreffende functie staat niet in index.php, maar in scripts.php die in include in index.php. Zie de volgende code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?
error_reporting(E_ALL);

session_start();
header("Cache-control: private"); //IE 6 fix

require( 'scripts.php' );

?>

<HTML>
<HEAD>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
    <META NAME="description" CONTENT="">
    <META NAME="keywords" CONTENT="">
    <LINK HREF="css/default_style.css" REL="stylesheet" TYPE="text/css">
    <TITLE>Admin</TITLE>
</HEAD>
<BODY>
<?
    
    //determine if the user is already logged in,
    // if not, then show the login screen
    
    if( !checkIfUserIsLoggedIn() )
    {
        showLogin();
    }

//rest van de code...

Ik heb al meerdere dingen geprobeerd, zoals de functie checkIfUserIsLoggedIn() naar index.php verplaatsen alleen 'verschuift' het probleem naar het feit dat elke functie aanroep vanuit index.php naar een functie in scripts.php weer een error veroorzaakt.

Iemand een idee wat het kan zijn?

Acties:
  • 0 Henk 'm!

  • Shadowman
  • Registratie: Januari 2002
  • Niet online
Zou je een klein beetje van de inhoud van scripts.php kunnen laten zien? (Wat mij betreft zijn de functie-declaraties voldoende, dus niet de inhoud van).

phpinfo/versies van php die worden gebruikt?

Directory-structuur is wel hetzelfde? Niet toevallig zo dat je test-server windows is en de hosting-server linux? (ivm hoofdletters, kan zijn dat een bestand op je hosting-server 2 keer bestaat, 1 keer zonder inhoud (aangezien ik geen error zie wat betreft includen en require daarop zou afkappen) en 1 keer met inhoud, maar verkeerde case).

Acties:
  • 0 Henk 'm!

  • pietje63
  • Registratie: Juli 2001
  • Laatst online: 18:09

pietje63

RTFM

Zet eens
PHP:
1
die("scripts.php wordt geinclude");
in je scripts.php om te testen of hij wordt geincude.

De grootste Nederlandstalige database met informatie over computers met zoekfunctie!!


Acties:
  • 0 Henk 'm!

Anoniem: 6032

Topicstarter
Shadowman schreef op donderdag 06 juli 2006 @ 21:27:
Zou je een klein beetje van de inhoud van scripts.php kunnen laten zien? (Wat mij betreft zijn de functie-declaraties voldoende, dus niet de inhoud van).

phpinfo/versies van php die worden gebruikt?

Directory-structuur is wel hetzelfde? Niet toevallig zo dat je test-server windows is en de hosting-server linux? (ivm hoofdletters, kan zijn dat een bestand op je hosting-server 2 keer bestaat, 1 keer zonder inhoud (aangezien ik geen error zie wat betreft includen en require daarop zou afkappen) en 1 keer met inhoud, maar verkeerde case).
Hier de scripts.php, maar daar valt denk ik weinig van uit af te leiden. Ik heb de functie even bovenaan gezet om veel overhead te voorkomen.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?
include_once( 'dbConnect.php' );
include_once( 'fixer.php' );
loadDatabase();


//Login functionality

function checkIfUserIsLoggedIn()
{
// ...
}

function showLogin()
{
// ...
}

//rest van de code


De directory structuur is hetzelfde, alleen de OS'en verschillen:
local: PHP Version 5.1.1, Windows XP
hosting: PHP Version 5.1.4, Linux (geen id welke distro)

Het is idd raar dat de foutmelding de functie aangeeft in lowercase, terwijl de functie aanroep en declaratie camelCase is :S

Acties:
  • 0 Henk 'm!

Anoniem: 6032

Topicstarter
pietje63 schreef op donderdag 06 juli 2006 @ 21:39:
Zet eens
PHP:
1
die("scripts.php wordt geinclude");
in je scripts.php om te testen of hij wordt geincude.
Dit heb ik zojuist gedaan, en hij geeft gewoon weer dat hij wordt geinclude... :(

Acties:
  • 0 Henk 'm!

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
Kijk eens goed naar het verschil tussen:

PHP:
1
checkifuserisloggedin()


en

PHP:
1
checkIfUserIsLoggedIn()


;)

March of the Eagles


Acties:
  • 0 Henk 'm!

  • Shadowman
  • Registratie: Januari 2002
  • Niet online
Functies zijn in php case-insensitive, dus dat mag geen verschil maken. En daarbij, php zet bij een error de functie-naam in lowercase.

Waar het mij eigenlijk om ging was de case van de directory/filenaam, of dat goed was, maar gezien het feit dat die die("") wel goed werkt, lijkt me dat wel in orde te zijn.

Ik zie het niet, maybe utf8/iso-8859 verschil, maar dat kan ik me niet echt voorstellen.

Acties:
  • 0 Henk 'm!

  • stappel_
  • Registratie: Augustus 2000
  • Laatst online: 26-04 17:39
misschien een include_path probleem.

Probeer eens
PHP:
1
print_r(explode(PATH_SEPARATOR, ini_get('include_path')));

in je index.php.

Misschien dat . niet voorkomt bij je host en dat hij zelf al ergens een scripts.php heeft staan, welke eerder in de include_path voorkomt.

Ubero: #2, Euler: #1, GOT: #1, Des: #1, Zeta: #1, Eon: #3, OGR-24: #3, OGR-25: #7,
LM: #7, AP: #5, DF: #19, D2OL: #37, SOB: #50, TSC: #63, RC5: #96


Acties:
  • 0 Henk 'm!

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 20:07

Robtimus

me Robtimus no like you

Maar waarom werkt die "die" dan wel?

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Acties:
  • 0 Henk 'm!

Anoniem: 6032

Topicstarter
stappel_ schreef op donderdag 06 juli 2006 @ 22:26:
misschien een include_path probleem.

Probeer eens
PHP:
1
print_r(explode(PATH_SEPARATOR, ini_get('include_path')));

in je index.php.

Misschien dat . niet voorkomt bij je host en dat hij zelf al ergens een scripts.php heeft staan, welke eerder in de include_path voorkomt.
Het is juist zo dat ie wel de 'juiste' scripts.php include, dat is te zien door de functie die("...") in het php bestand.

Misschien nog even iets meer achtergrond info. Voorheen had ik op dezelfde directory op de hosting een eerdere versie draaien van de website, hier kwamen geen rare problemen voor. Echter nu de nieuwere versie erop staat is dus bovenstaand probleem opgedoken.
Ik zelf neig een beetje naar de gedachte dat het gebruik van de sessions de boosdoener is, aangezien deze toegevoegd zijn aan de nieuwere versie. Alhoewil ik totaal niet kan zien hoe dit aan elkaar verbonden is... dilemma dilemma.

Acties:
  • 0 Henk 'm!

  • WormLord
  • Registratie: September 2003
  • Laatst online: 10-05 11:00

WormLord

Devver

Je zou eens met get_defined_functions kunnen kijken welke functies er wel zijn.

En je hebt hopelijk die
PHP:
1
die("...");
wel aan het eind van de scripts.php gezet. Dan weet je namelijk niet alleen dat het script word geinclude, maar ook dat het helemaal verwerkt is.

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 09-06 21:17
Gooi sowieso bovenin en index.php even;
PHP:
1
2
error_reporting(E_ALL);
ini_set("display_errors", 1);

Acties:
  • 0 Henk 'm!

  • moozzuzz
  • Registratie: Januari 2005
  • Niet online
Staan al je extra scripts in de root-dir (tov index.php)? Ik zet voor mijn gemak altijd ./path/to/scriptname

Acties:
  • 0 Henk 'm!

Anoniem: 6032

Topicstarter
Het probleem is iets verschoven. Ik was gisteravond bezig met het precies pin-pointen van de fout, waardoor ik de aanroepen van checkIfUserIsLoggedIn() tijdelijk in scripts.php heb gezet.
Dan alsnog kan hij de functie niet vinden op de hosting, terwijl dit lokaal geen enkel probleem is.

Ik zit nu op mn werk dus kan niks doen, vanavond kan ik er weer naar kijken.
Fricky: ik zal die ini_set ook nog toevoegen.

Acties:
  • 0 Henk 'm!

  • iH8
  • Registratie: December 2001
  • Laatst online: 17-06-2024

iH8

ik heb laatst gehad dat een file ook niet wilde worden geinclude. nou sla mij maar dood want 't werkte wel als ik de included file begon en eindigde met <?php ... ?> ipv <? ... ?>

misschien heb je er wat aan :)

Aunt bunny is coming to get me!

Pagina: 1