My installation of TikiWiki v1.10 (CVS) Arcturus on a server running PHP 4.4.1 is returning this notice:

Notice: Only variable references should be returned by reference in /home/always12/public_html/wiki/lib/adodb/adodb.inc.php on line 2797

Observation 1:  Moodle's forums explain that this problem appears after servers upgrade to PHP 4.4.0, and that the fix is to re-code adodb.inc.php so that it conforms to PHP 4.4.0's rules regarding returning variables by reference.  See http://moodle.org/mod/forum/discuss.php?d=27453 , http://www.obdev.at/developers/articles/00002.html , and http://us2.php.net/manual/en/language.references.return.php

Observation 2:  PHP 5 might not give these notices.  See http://bugs.php.net/bug.php?id=33558&edit=1

Recommendation:  I'm failing to understand the correct way to fix adodb's reference return myself, so I recommend TikiWiki's developers upgrade TikiWiki to the latest adodb library, fix adodb's adherence to PHP's rules for passing references, and send the adodb project a patch.

Potential fix:  Editing line 2793 in adodb.inc.php from:

    function &FetchRow()

to:

    function FetchRow()

has made the error message go away for now.  I fear this is using a "dead" copy of the object referred to in the $arr variable in lines 2799 & 2802 rather than a reference to the "live" object itself, though.  Does this function's return value have to be a reference to a "live" object, or can it safely be a "dead" copy of an object?

Also, perhaps I should be wrapping that change in something like this:

$isProblemVersion =
version_compare(phpversion(), "4.4.0", ">=");
if ($isProblemVersion){
    function FetchRow();
    ...
}else{
    function &FetchRow();
    ...
}
unset($isProblemVersion);

- Tim Black