I have the same problem. What do I need to do in order to fix this?
pls. advise
Having the same problem since upgrading to 2.2…
Also getting the error in lines 125 and 131. Tried all the classic fixes to no avail. Sometimes flushing the cache works, sometimes not.
I just tried it today and have the same error. No fix yet?
I do have the same error after upgrade from 2.1.2 to 2.2. The cause it that the $id is an empty array, that seems to come from the $GLOBALS[‘page’].
PHP 4.3.10 (cli) (built: Mar 9 2005 23:58:04)
Copyright (c) 1997-2004 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies
with Zend Extension Manager v1.0.7, Copyright (c) 2003-2005, by Zend Technologies
with Zend Optimizer v2.5.10, Copyright (c) 1998-2005, by Zend Technologies
Here is my backtrace
[moderated info pasted here http://wordpress.pastebin.ca/523763 ]
I hope that helps someone to figure out what is happening.
Solved! It seems to be a Zend optimizer version issue.
Upgrade to php 4.4.7 and zend optimizer 3.2.8 solved the issue described.
The old combination php 4.3.10 and Zend Optimizer 2.5.10. did not work.
This really is not solved!
The problem is not being caused by the Zend optimizer, apache or the PHP whatsoever. It’s simply being caused by functions not taking care of what to supply to the WP_Object_Cache->get() method.
In my case I was just trying to resolve the categories for a given post. Tracking the problem down I found that somehow the function
“update_post_category_cache()” (functions.php:640) caused the trouble.
This one is trying to get the category information for each category found for the post (line 667-668).
It happens under certain circumstances the WP_Object_Cache->get() method is called with an object instead of a string or an integer value as $id to cache.
My fix was to apply a correct check to the WP_Object_Cache->get() method:
--- ../wordpress/wp-includes/cache.php.old 2007-07-04 08:03:39.000000000 +0200
+++ ../wordpress/wp-includes/cache.php 2007-07-04 08:03:06.000000000 +0200
@@ -122,6 +122,10 @@
if (empty ($group))
$group = 'default';
+ if (!is_string($id) || !is_numeric($id)) {
+ return false;
+ }
+
if (isset ($this->cache[$group][$id])) {
if ($count_hits)
$this->warm_cache_hits += 1;
BUT I really think this should be fixed within the calling logic too in order to handle this kind of “caching” correctly.
Oh I see this is still not fixed … the new version of our patch is
--- ../wordpress/wp-includes/cache.php.old 2007-09-26 08:03:39.000000000 +0200
+++ ../wordpress/wp-includes/cache.php 2007-09-26 08:03:06.000000000 +0200
@@ -122,6 +122,10 @@
if (empty ($group))
$group = 'default';
+ if (!is_string($id) || !is_numeric($id)) {
+ return false;
+ }
+
if (isset ($this->cache[$group][$id])) {
if ($count_hits)
$this->warm_cache_hits += 1;