phpopenwebanalytics

Open Web Analytics error during first call to install.php because of missing OWA_DTD_BIGINT


In a clean unpack of owa_1.7.8_packaged.tar with all server setup as requested I get the following error when calling https://server/install.php :

PHP Fatal error: Uncaught Error: Undefined constant "OWA_DTD_BIGINT" in /var/www/owa/modules/base/entities/configuration.php:37
Stack trace:\n#0 /var/www/owa/owa_lib.php(489): owa_configuration->__construct()
#1 /var/www/owa/owa_coreAPI.php(561): owa_lib::factory()
#2 /var/www/owa/owa_coreAPI.php(521): owa_coreAPI::moduleSpecificFactory()
#3 /var/www/owa/modules/base/classes/settings.php(72): owa_coreAPI::entityFactory()
#4 /var/www/owa/owa_lib.php(489): owa_settings->__construct()
#5 /var/www/owa/owa_coreAPI.php(487): owa_lib::factory()
#6 /var/www/owa/owa_coreAPI.php(142): owa_coreAPI::supportClassFactory()
#7 /var/www/owa/owa_base.php(78): owa_coreAPI::configSingleton()
#8 /var/www/owa/owa_caller.php(76): owa_base->__construct()
#9 /var/www/owa/owa.php(24): owa_caller->__construct()
#10 /var/www/owa/install.php(38): owa->__construct()
#11 {main}\n  thrown in /var/www/owa/modules/base/entities/configuration.php on line 37

and it is true, in /var/www/owa/modules/base/entities/configuration.php it is just:

<?php
class owa_configuration extends owa_entity {
    function __construct() {
        $this->setTableName('configuration');
        $this->properties['id'] = new owa_dbColumn;
        $this->properties['id']->setDataType(OWA_DTD_BIGINT);
        $this->properties['id']->setPrimaryKey();
        $this->properties['settings'] = new owa_dbColumn;
        $this->properties['settings']->setDataType(OWA_DTD_BLOB);
        $this->setCachable();
    }
}
?>

while OWA_DTD_BIGINT is defined in /var/www/owa/plugins/db/owa_db_mysql.php

Sorry, my understanding of php ends here. Is this a bug or a misconfiguration?


Solution

  • It turns out, this is a project bug. See the project issue page https://github.com/Open-Web-Analytics/Open-Web-Analytics/issues

    php7 did only warn, but php8 fails:

    The "installer.php" does not support php8! This is due to the incorrect use of constants in files that are incorrectly used (but not needed) during install.php. The constants only get configured during install and work fine in production. You need to either

    1. downgrade to php7
    2. configure manually by editing+copying config files .. puh
    3. fiddle with a few php files to fix the "undefined constants" bug. This is just a workaround.
    4. attempt a real design fix ... but the project is not very active right now and I am not a php expert.

    I did 3. of this list on my local system. So, if you run into this, ask me or checkout my fork at https://github.com/ralfulrich/Open-Web-Analytics