Page MenuHomePhabricator

Fatal Error after installation with Oracle backend: Call to checkTitleEncoding() on a non-object
Closed, DeclinedPublic

Description

Author: jens.roebel

Description:
phpinfo

I am not able to setup MediaWiki with the below environment specifications:

Windows NT MISC-PC01 6.1 build 7601 (Windows 7 Business Edition Service Pack 1)

Apache/2.2.25 (Win32) PHP/5.4.26 mod_fcgid/2.3.6

Oracle Run-time Client Library Version: 11.2.0.4.0

Log status:

Install

Including extensions... done

Setting up database... done

Creating database user... done

Creating tables... done

Populating default interwiki table... done

Initializing statistics... done

Generating secret keys... done

Creating administrator user account... done

Creating main page with default content...

Warning: strpos() expects parameter 1 to be string, object given in C:\Apache2.2\htdocs\wiki\includes\db\DatabaseOracle.php on line 1146

Warning: strpos() expects parameter 1 to be string, object given in C:\Apache2.2\htdocs\wiki\includes\db\DatabaseOracle.php on line 1142

Warning: substr() expects parameter 1 to be string, object given in C:\Apache2.2\htdocs\wiki\includes\db\DatabaseOracle.php on line 1142
done

Creating tables for enabled extensions...

When trying to enter the page this error message shows up:

Fatal error: Call to a member function checkTitleEncoding() on a non-object in C:\Apache2.2\htdocs\wiki\includes\db\DatabaseOracle.php on line 1158


Version: 1.22.4
Severity: major
OS: Windows 7
Platform: PC

Attached:

Details

Reference
bz63178

Event Timeline

bzimport raised the priority of this task from to Medium.Nov 22 2014, 2:51 AM
bzimport set Reference to bz63178.
bzimport added a subscriber: Unknown Object (MLST).

jens.roebel wrote:

Oracle Version

Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
"CORE 11.2.0.3.0 Production"
TNS for Linux: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production

Thanks for taking the time to report this!

gustavodn wrote:

Backtrace obtained adding a call to debug_print_backtrace() just before the checkTitleEncoding() call (on version 1.21.11, but the problem seems the same):

php maintenance/eval.php
#0 DatabaseOracle->wrapFieldForWhere(l10n_cache, lc_lang, pt-br) called at [/var/www/html/sdwiki_1.21.11/includes/db/DatabaseOracle.php:1135]
#1 DatabaseOracle->wrapConditionsForWhere(l10n_cache, Array ([lc_lang] => pt-br,[lc_key] => deps)) called at [/var/www/html/sdwiki_1.21.11/includes/db/DatabaseOracle.php:1145]
#2 DatabaseOracle->selectRow(l10n_cache, Array ([0] => lc_value), Array ([lc_lang] => pt-br,[lc_key] => deps), LCStore_DB::get) called at [/var/www/html/sdwiki_1.21.11/includes/cache/LocalisationCache.php:1013]
#3 LCStore_DB->get(pt-br, deps) called at [/var/www/html/sdwiki_1.21.11/includes/cache/LocalisationCache.php:381]
#4 LocalisationCache->isExpired(pt-br) called at [/var/www/html/sdwiki_1.21.11/includes/cache/LocalisationCache.php:424]
#5 LocalisationCache->initLanguage(pt-br) called at [/var/www/html/sdwiki_1.21.11/includes/cache/LocalisationCache.php:310]
#6 LocalisationCache->loadItem(pt-br, fallback) called at [/var/www/html/sdwiki_1.21.11/includes/cache/LocalisationCache.php:245]
#7 LocalisationCache->getItem(pt-br, fallback) called at [/var/www/html/sdwiki_1.21.11/languages/Language.php:3978]
#8 Language::getFallbacksFor(pt-br) called at [/var/www/html/sdwiki_1.21.11/languages/Language.php:230]
#9 Language::newFromCode(pt-br) called at [/var/www/html/sdwiki_1.21.11/languages/Language.php:189]
#10 Language::factory(pt-br) called at [/var/www/html/sdwiki_1.21.11/includes/Setup.php:497]
#11 require_once(/var/www/html/sdwiki_1.21.11/includes/Setup.php) called at [/var/www/html/sdwiki_1.21.11/maintenance/doMaintenance.php:103]
#12 require(/var/www/html/sdwiki_1.21.11/maintenance/doMaintenance.php) called at [/var/www/html/sdwiki_1.21.11/maintenance/commandLine.inc:58]
#13 require_once(/var/www/html/sdwiki_1.21.11/maintenance/commandLine.inc) called at [/var/www/html/sdwiki_1.21.11/maintenance/eval.php:37]
NULL
PHP Fatal error: Call to a member function checkTitleEncoding() on a non-object in /var/www/html/sdwiki_1.21.11/includes/db/DatabaseOracle.php on line 1122

What happens is DatabaseOracle.php needs the $wgContLang object, but creation of the $wgContLang object tries to access the LocalisationCache, which, by default, resides on the database, unless $wgCacheDirectory is set.

So, it seems setting $wgCacheDirectory to a directory, thus making the cache reside on disk files on that directory, works around this issue. I tried and it seem to have worked (again, on version 1.21.11).

Other database drivers don't seem to need $wgContLang, dunno why the Oracle one does.

Heads-up: As per RFC discussion in August 2019, the previously experimental support for using Oracle or MSSQL as database backends in MediaWiki core has been removed in MediaWiki 1.34, so this task might end up as declined in the future.

Mainframe98 subscribed.

Heads-up: As per RFC discussion in August 2019, the previously experimental support for using Oracle or MSSQL as database backends in MediaWiki core has been removed in MediaWiki 1.34, so this task might end up as declined in the future.

No activity, declining.