Enabling and disabling PHP’s APC cache on a per Virtual Host level in Apache

On some systems you want APC to work for a few Virtual Hosts, but not all -- as it may break things like phpMyAdmin.

You can do that by disabling the APC "cache_by_default" option globally. In your apc-config file (usually /etc/php.d/apc.ini or somewhere along your general /etc/php.ini file) you disable the default caching.

apc.cache_by_default = 0 

And you can then enable it per Virtual Host you like, either in the general Virtual Host apache config or in the .htaccess file if you allow Overrides in the Apache config.

php_flag apc.cache_by_default On

Notice the difference in the apc.ini config where the value is set to '0' (zero). When passing "flags" to PHP via the Virtual Host or .htaccess config, it's either On (=1) or Off (=0).

The Social Box

You can sign up for more updates via Twitter or Facebook below. On Twitter, I regularly talk about technology or tweet about interesting stories. Topics that don't necessarily make it to this blog. Facebook contains a steady update of blogposts and some more lightweight stories.

Write a Comment

Do you care about the markup if your comment? You can use the following HTML tags:

<code>command</code>: command highlighting
<pre>text</pre>: pre-formatted code, can be multi-line (black background, white letters)

example <pre> tag
<blockquote>text</blockquote> quoted text
quoted example

None of this is needed of course, it's all optional!



  1. Thanks, I used this for a client where some sites don’t play nice with APC.
    However, disabling apc via .htaccess doesn’t seem to work with FastCGI.

    APC and Zend Optimizer don’t play nice.

    If you install Zend Optimizer after APC has been installed,
    you might get errors for certain sites.

    You can fix this by using the following guide:


    This way, you can globally enable APC and disable APC for sites that require Zend Optimzer.