From: Tim B. <ti...@al...> - 2005-12-04 06:14:49
|
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 |