• Resolved barkins

    (@barkins)


    Just tried updating some of my websites to 4.7 and some of them return the following error:

    Fatal error: Call to a member function do_all_hook()

    Other websites updates no problem.

    I’m glad I have backups, but clearly this is an issue with 4.7 as I have seen others report the same problem.

    All plugins are up-to-date, including the theme.

Viewing 14 replies - 1 through 14 (of 14 total)
  • Moderator James Huff

    (@macmanx)

    Volunteer Moderator

    Try manually resetting your plugins (no Dashboard access required). If that resolves the issue, reactivate each one individually until you find the cause.

    If that does not resolve the issue, access your server via SFTP or FTP, or a file manager in your hosting account’s control panel, navigate to /wp-content/themes/ and rename the directory of your currently active theme. This will force the default theme to activate and hopefully rule-out a theme-specific issue (theme functions can interfere like plugins).

    This might be the same issue as in this topic: https://wordpress.org/support/topic/fatal-error-call-to-a-member-function-do_all_hook-on-array-in/ Someone suggested in there that it might happen when PHP-APC is not activated. Try renaming your object-cache.php in the wp-content directory to see if this is the same problem. There is also an open ticket for this issue: https://core.trac.wordpress.org/ticket/39146

    Thread Starter barkins

    (@barkins)

    Thanks. I updated the same website locally (MAMP) and the update worked perfectly.

    The same website on the live server generates the following error:

    Fatal error: Call to a member function do_all_hook()

    On the same server, I updated other websites successfully. :\

    Thread Starter barkins

    (@barkins)

    Thanks @karimeo

    That indeed solved the problem. In short 4.7 update should come with instructions on deactivating object cache before updating.

    Moderator James Huff

    (@macmanx)

    Volunteer Moderator

    That is being considered for future updates.

    For now though, we already mention that at https://wordpress.org/support/topic/read-this-first-wordpress-4-7-master-list/

    • This reply was modified 7 years, 4 months ago by James Huff.

    The instructions at https://wordpress.org/support/topic/read-this-first-wordpress-4-7-master-list/ mention the wp-content/object-cache.php file in the context of the W3 Total cache plugin. I don’t have the W3 Total cache plugin, so I assumed that the instructions to remove wp-content/object-cache.php didn’t apply to me. It turns that I did have that file, even though I don’t have the plugin, and that I did need to remove the file.

    I think it would be better if the instructions state that you might need to “remove the db.php, advanced-cache.php and object-cache.php files manually from the wp-content/ directory, even if you don’t have the W3 Total cache plugin.”

    Moderator James Huff

    (@macmanx)

    Volunteer Moderator

    Depending on the cache system you’re using, the only thing removing the files will do is lock your site in a static state, which is why the bit you quoted is only in context of W3 Total Cache.

    The section I was referring to was:

    If your host has a “Purge Varnish” or “Flush Memcache” tool, try that. You can ask your provider to flush memcache and Varnish for you if necessary.

    We’ll look into re-wording the cache bits for the next release as there are some changes coming down the line next time.

    • This reply was modified 7 years, 4 months ago by James Huff. Reason: clarification

    When I upgraded to WordPress 4.7, my site went down hard. The debug.log file showed the following error:

    
    PHP Fatal error:  Call to a member function do_all_hook() on array in /home/.../wp-includes/plugin.php on line 837
    

    I tried everything listed in the WordPress 4.7 Master List. Nothing fixed the issue.

    I saw reference in the forums to renaming wp-content/object-cache.php. I did that and it fixed the problem. I do not use W3 Total Cache. My hosting provider installed a Varnish HTTP Purge plugin.

    Did I do the wrong thing?

    Moderator James Huff

    (@macmanx)

    Volunteer Moderator

    Not at all, that’s not what I meant. Deleting the file that controls the caching system is not always safe, that’s why we can’t mention it wholesale in the Master List.

    In your case, it worked, so no harm there.

    We’re discussing the best way to re-word the caching information in the Master List to make it a lot clearer.

    That makes sense. Thank you, @macmanx, for bearing with me…and your hard work.

    I renamed wp-content/object-cache.php and ours worked.

    We’re on GoDaddy with Sitelock Cache.

    I changed the name of the object-cache.php to a different name and this fixed my issue as well.

    So I renamed object-cache.php to object-cache-rename.php. This was the trick for me, too. What do we do afterward? Do we rename it back to object-cache.php? I don’t know exactly what is cached here or whether it’s necessary. It seems like it is there to support cacheing for various plugins. If our hosting provides cacheing, I assume this is independent of that. Is there any real reason why the update package can’t handle this?
    But, MANY THANKS!!! … I was definitely stumped.

    @nc3man: If everything is working as expected on your site, leave the file renamed as object-cache-rename.php. At least, that’s what worked for me. If your hosting service provides caching, you can check that it is still working by examining the response headers from your site. You should see fields that correspond to the caching service your provider is giving you. For example, my service uses Varnish, so I see headers like this:

    Via:"1.1 varnish"
    X-Varnish:"917076083"
Viewing 14 replies - 1 through 14 (of 14 total)
  • The topic ‘Fatal error: Call to a member function do_all_hook()’ is closed to new replies.