WordPress Error Fix(?): Increase PHP Memory for cache.php
This trick isn’t guaranteed to prevent all WordPress-generated PHP memory errors, but it certainly seems to help reduce their overall occurrence. For some reason, after my host upgraded their servers to Apache 1.3.41, I began logging an extremely high number of fatal PHP “memory exhausted” errors resulting from the WordPress cache.php script. Here is an example of the countless errors that are generated:
[17-Feb-2008 19:26:38] PHP Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 6233929 bytes) in /home/.../press/wp-includes/cache.php on line 330
[17-Feb-2008 19:30:57] PHP Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 6327989 bytes) in /home/.../press/wp-includes/cache.php on line 330
[17-Feb-2008 19:33:35] PHP Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 6253909 bytes) in /home/.../press/wp-includes/cache.php on line 330
.
.
.
[ + lots more ]
.
.
.
[17-Feb-2008 19:36:19] PHP Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 6253069 bytes) in /home/.../press/wp-includes/cache.php on line 330
[17-Feb-2008 19:37:10] PHP Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 6379449 bytes) in /home/.../press/wp-includes/cache.php on line 330
[17-Feb-2008 19:37:56] PHP Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 6263789 bytes) in /home/.../press/wp-includes/cache.php on line 330
After researching online and learning that I am not alone with this issue, I deployed a threefold defense strategy to eliminate future memory conflicts related to the now-infamous cache.php pandemic. First, open the file wp-includes/cache.php and place the following code immediately after the opening <?php tag:
ini_set('memory_limit','32M'); // set memory to prevent fatal errors
After that, create an htaccess file for the wp-includes directory and insert the following directive:
# set memory limit for cache.php
php_value memory_limit 32M
Finally, create a local php.ini file in the same directory (wp-includes) and insert this:
;; set memory limit for cache.php
memory_limit = 32M
And that’s it. Save, upload, test and check for additional errors. If necessary, you may wish to try alternate values for the memory limit. I am not positive, but I think that valid values include 8, 12, 16, 32, 64, 128, ...etc., but the upper limit will vary depending on your server settings. Like I said, it doesn’t always work, but it definitely seems to help reduce the overall volume of memory-related errors in certain environments. To facilitate this part of the implementation process, I have zipped a complete set of the three required files in their respective formats. Simply unzip, upload and done:
Download the PHP Memory Control Pack [ ~1KB | .zip | 351 downloads ]
Note: If you happen to have absolutely any idea(s) as to why this problem continues to occur, there is a growing number of WordPress users (myself included) that are desperate for the answer. As mentioned in the article, increasing/limiting PHP memory (via any method) does not always work. Unfortunately, many users continue to log hundreds of these errors every day. Any clues and/or alternate fixes are more than welcome!</note>
Related articles
- Improve Site Performance by Increasing PHP Memory for WordPress
- Three Unsolved WordPress Mysteries
- Advanced PHP Error Handling via htaccess
- Advanced PHP Error Handling via PHP
- Preventing the Unpredictable White Screen of Death for WordPress Sites with Multiple Themes
- Permalink Enlightenment
- Perishable Press Unresolved Error Log
About this article
This is article #500, posted by Perishable on Sunday, February 17, 2008 @ 05:04pm. Categorized as WordPress, and tagged with bug, cache, errors, htaccess, log, memory, php, WordPress. Updated on July 04, 2008. Visited 13132 times. 10 Responses »
Bookmark • Subscribe • Explore
« Just Testing.. • Up • Quickly Disable or Enable All WordPress Plugins via the Database »
1 • February 17, 2008 at 6:50 pm — Rasheed says:
Thanks Jeff.
Tagged !