[PHP] Vreemde uitvoer bij aanmaken van objecten. PHP crash?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Mayco
  • Registratie: Augustus 2002
  • Laatst online: 13-08 08:00
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.

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)...

Acties:
  • 0 Henk 'm!

  • LauPro
  • Registratie: Augustus 2001
  • Laatst online: 19-09 16:51

LauPro

Prof Mierenneuke®

Ik heb hier ook last van gehad, was toen opgelost met upgrade naar Apache 2.2.4.

Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!


Acties:
  • 0 Henk 'm!

  • Mayco
  • Registratie: Augustus 2002
  • Laatst online: 13-08 08:00
Heb gevraagd aan het hostingbedrijf of ze een update willen doen... Nu hopen dat ze niet moeilijk gaan doen...

Acties:
  • 0 Henk 'm!

  • --MeAngry--
  • Registratie: September 2002
  • Laatst online: 19-09 16:35

--MeAngry--

aka Qonstrukt

Welke versie van Apache draaien ze nu dan? Want ik weet wel dat in ieder geval 2.2.3 veel problemen met PHP5 had (weet echter niet waarom precies). En dan hielp een update naar 2.2.4. Maar misschien dat het in dit geval ook beter is de PHP-versie een keer te updaten.

Tesla Model Y RWD (2024)


Acties:
  • 0 Henk 'm!

  • Mayco
  • Registratie: Augustus 2002
  • Laatst online: 13-08 08:00
Ik heb het herschreven zodat ik geen pear meer gebruik, maar losse mysql_* calls... Ze hadden in een mail wel gezegt dat ze een PHP optimizer ofzo hadden geinstalleerd, en die hebben ze nu uitgeschakeld...