Ik heb een website ergens gehost, server draait php 5.0.4. Ik gebruik PEAR en MDB2 met de mysqli driver. Deze laatste zijn allemaal de laatste stable versie.
Het probleem is nu dat ik soms op die pagina:
soms de correcte uitvoer krijg
soms geen utivoer krijg
soms een Forbidden pagina krijg
soms een default pagina van Apache krijg
Door op bepaalde plaatsen een die("test") te zetten kan ik zien tot waar de uitvoer correct is. Dan krijg ik dus soms 'test' te zien, en soms de andere dingen die hierboven staan.
Ik het het hele gedoe herleid tot het aanmaken van een object.
als ik een die("test") voor die regel zet, krijg ik ALTIJD test te zien... Zoals je zou verwachten dus... Het probleem zit em dus in de constructor vavn dat object zou je denken... Niet dus...
als ik als eerste regel (dus nog voor die parent:: regel) een die("test") zet, is de uitvoer toch niet meer altijd "test", en is er dus al iets gebeurt met php dat fout gaat...
Bij mijn weten is er toch geen code tussen de aanroep van een object, en de uitvoering van de constructor, buiten interne php routines?
Heefft iemand hetzelfde al eens voorgehad? Is dit een probleem met php 5.0.4? Ik kan op bugtrackers ofzo niets vinden...
edit: is geen reclame, maar de website in kwestie is www.decorde.be (je kan zelf zien dat er soms geen output is, en soms weer wel)...
Het probleem is nu dat ik soms op die pagina:
soms de correcte uitvoer krijg
soms geen utivoer krijg
soms een Forbidden pagina krijg
soms een default pagina van Apache krijg
Door op bepaalde plaatsen een die("test") te zetten kan ik zien tot waar de uitvoer correct is. Dan krijg ik dus soms 'test' te zien, en soms de andere dingen die hierboven staan.
Ik het het hele gedoe herleid tot het aanmaken van een object.
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
| function &factory($dsn, $options = false) { $dsninfo = MDB2::parseDSN($dsn); if (empty($dsninfo['phptype'])) { $err =& MDB2::raiseError(MDB2_ERROR_NOT_FOUND, null, null, 'no RDBMS driver specified'); return $err; } $class_name = 'MDB2_Driver_'.$dsninfo['phptype']; $debug = (!empty($options['debug'])); $err = MDB2::loadClass($class_name, $debug); if (PEAR::isError($err)) { return $err; } $db =& new $class_name(); // <----- hiervoor gaat het nog goed, dus het probleem zou hierin moeten zitten (hetzelfde gebeurt trouwens bij een gewone $db = new MDB_Driver_mysqli(); ) $db->setDSN($dsninfo); $err = MDB2::setOptions($db, $options); if (PEAR::isError($err)) { return $err; } return $db; } |
als ik een die("test") voor die regel zet, krijg ik ALTIJD test te zien... Zoals je zou verwachten dus... Het probleem zit em dus in de constructor vavn dat object zou je denken... Niet dus...
PHP:
1
2
3
4
5
6
7
8
| function __construct() { parent::__construct(); $this->phptype = 'mysqli'; //... knip $this->options['multi_query'] = false; } |
als ik als eerste regel (dus nog voor die parent:: regel) een die("test") zet, is de uitvoer toch niet meer altijd "test", en is er dus al iets gebeurt met php dat fout gaat...
Bij mijn weten is er toch geen code tussen de aanroep van een object, en de uitvoering van de constructor, buiten interne php routines?
Heefft iemand hetzelfde al eens voorgehad? Is dit een probleem met php 5.0.4? Ik kan op bugtrackers ofzo niets vinden...
edit: is geen reclame, maar de website in kwestie is www.decorde.be (je kan zelf zien dat er soms geen output is, en soms weer wel)...