glbale variable nicht über $GLOBALS erreichbar
bernhard
- php
hi,
ich habe ein etwas schwer zu beschreibendes problem und weiss nicht mehr wo ich noch nach der ursache suchen soll:
im index.php file steht bei mir:
require_once $list; // $list = 'config/load.php';
in der besagten Datei load.php werden dann sämtliche module geladen:
require_once 'config1.php';
require_once 'config2.php';
require_once 'config3.php';
in den config files sind variablen definiert, über die ich in meiner applikation via $GLOBALS['variablenname'] zugreife. also z.b:
$db['host'] = 'localhost';
$db['user'] = 'my_user';
etc.
die config dateien werden ordnungsgemäss includiert & interpretiert (ich habe das mit echo-statements überprüft), allerdings kann ich mit $GLOBALS['db'] danach nicht (von meiner applikation aus) auf die $db varaible zugreifen. das geht nur dann, wenn ich in jedem config file vor jede Variable die ich dort definiere z.b. $db =& GLOBALS['db']; setze.
Bin absolut überfragt was hier falsch ist. Hoffe auf Tipps.
register_globals ist Off (hab auch On schon probiert)
lg bernhard
echo $begrüßung;
Bin absolut überfragt was hier falsch ist. Hoffe auf Tipps.
Ich tippe darauf, dass du dich nicht im globalen Scope befindest. Vermutlich rufst du require_once 'config1.php'; etc. in einer Funktion auf. http://de.php.net/manual/en/function.include.php
echo "$verabschiedung $name";
hallo dedlfix
Bin absolut überfragt was hier falsch ist. Hoffe auf Tipps.
Ich tippe darauf, dass du dich nicht im globalen Scope befindest. Vermutlich rufst du require_once 'config1.php'; etc. in einer Funktion auf. http://de.php.net/manual/en/function.include.php
hmmm ... das ist schonmal ein heisser tipp. hab ein wenig herumprobiert. ich definiere nun im config file vorher jede variable als 'global' dann hauts hin! mein bisheriger versuch "$db =& GLOBALS['db']" schein equivalent zu sein mit "global $db". erschien mir anfangs ein wenig seltsam, leuchtet mir nun aber ein wieso das so sein muss.
nun denn ... vielen dank !!
lg bernhard
Hallo bernhard
ich habe ein etwas schwer zu beschreibendes problem und weiss nicht mehr wo ich noch nach der ursache suchen soll:
Naja... sollte doch nicht allzu schwer werden ;)
im index.php file steht bei mir:
require_once $list; // $list = 'config/load.php';
Es ist gefährlich Variablen in requires und includes zu verwenden
Wahrscheinlich wirst du so oder so nur die 'config/load.php' einbinden ... oder ?
--> require_once 'config/load.php';
Und schon ist die Welt besser :D
in der besagten Datei load.php werden dann sämtliche module geladen:
require_once 'config1.php';
require_once 'config2.php';
require_once 'config3.php';
Das sollte eigentlich kein Problem sein ;)
in den config files sind variablen definiert, über die ich in meiner applikation via $GLOBALS['variablenname'] zugreife. also z.b:
$db['host'] = 'localhost';
$db['user'] = 'my_user';
etc.
Naja ... wäre es da nicht besser eine von PHP gelieferte Funktion zu verwenden ?
parse_ini_file
Diese Funktion verwende ich sehr gerne !
Aber nur zur Info !
-> Du musst aufpassen !
-> http-Deeplink ! und schon kann man alles sehen
-> einfach config.ini.php nennen und einen Parse Error bei Direktaufruf erzeugen !
[Auszug]
;<?php /
; Allgemeine Konfigurationen
;
[/Auszug]
Ergibt dann einen Fatal Error => unexpected "/"
Vllt nicht die schönste Methode, aber besser als nichts ;)
Man könnte es auch mit .htacces schützen.
die config dateien werden ordnungsgemäss includiert & interpretiert (ich habe das mit echo-statements überprüft), allerdings kann ich mit $GLOBALS['db'] danach nicht (von meiner applikation aus) auf die $db varaible zugreifen. das geht nur dann, wenn ich in jedem config file vor jede Variable die ich dort definiere z.b. $db =& GLOBALS['db']; setze.
Wo willst du denn die Variable aufrufen ?
Vllt solltest du die Configs so einbauen :
$GLOBALS['db']['user'] = "Username";
$GLOBALS['db']['pass'] = "Passwort";
Und dann noch :
include_once 'config/load.php';
Dann kannst du auf $GLOBALS['db']['user'] zugreifen.
echo $GLOBALS['db']['user'];
Ausgabe :
Username
Bin absolut überfragt was hier falsch ist. Hoffe auf Tipps.
register_globals ist Off (hab auch On schon probiert)
Das hat damit eher weniger zu tun ;)
Hoffe ich konnte helfen.
Gruß Jojo
Hallo jojo
Naja ... wäre es da nicht besser eine von PHP gelieferte Funktion zu verwenden ?
parse_ini_file
Diese Funktion verwende ich sehr gerne !
nettes ding! kannte ich noch gar nicht. aber bei mir würden in der config andere variablen benötigt werden, ich müsste also variablen im ini file verwenden können.
Vllt solltest du die Configs so einbauen :
$GLOBALS['db']['user'] = "Username";
$GLOBALS['db']['pass'] = "Passwort";
hatte ich teilweise auch schon überlegt, finde ich aber grauslich.
Und dann noch :
include_once 'config/load.php';
das problem ist bei mir, dass ich im vorhinein nicht weiss aus welchem verzeichnis ich die config hole. die $list variable ist bei mir nur ne schreiberleichterung. der pfad zur config ist natürlich konstant defined().
Dann kannst du auf $GLOBALS['db']['user'] zugreifen.
genauso mache ich es eigentlich eh überall.
register_globals ist Off (hab auch On schon probiert)
Das hat damit eher weniger zu tun ;)
naja, in seiner verzweiflung sucht man überall ;-)
danke & lg bernhard