How would I use the apc.filters parameter in APC opcode caching to not cache certain paths? For example, I want caching to be active for anything under the path:
"/var/www/vhosts"
and exclude paths like
"/usr/share/psa-horde/"
I tried using
apc.cache_by_default = 0
apc.filters = "+/var/www/vhosts"
and
apc.cache_by_default = 1
apc.filters = "-/usr/share/psa-horde/"
But neither worked as I expected.
http://www.php.net/manual/en/apc.configuration.php#ini.apc.filters
Should the filter be something more like "+/var/www/vhosts/*" (note the wildcard)? I'm afraid this isn't possible because of the way filters works:
Note that the filename used for
matching is the one passed to
include/require, not the absolute
path.
Any ideas or sample configurations?
The filter should be a comma separated list of POSIX extended regular expressions. I believe what you have in the second attempt only matches the exact path /usr/share/psa-horde/, and not /usr/share/psa-horde/something or /usr/share/psa-horde/anotherfile.php
The following should match anything in the sub folder
apc.filters = "-/usr/share/psa-horde/.*"
A very late response, but just in case someone else is having this issue (I'm going to guess you may be/have been running a Plesk box, which is why I came across this).
Your best bet is to have APC in the list of loaded php modules, but have
apc.enabled 0
in the master php.ini. Then, for each vhost you want to have it enabled for, add php_admin_value apc.enabled 1
to enable for each. Could be an issue if you have a ton of sites, but works for just a few.
pnomolos' solution works if you have different vhosts, but it won't work if you have only one and want to control caching on a truly per-directory basis.
This bug report points to the best the solution : https://bugs.php.net/bug.php?id=57064
Enable APC and set apc.cache_by_default
to 0
in php.ini
. In your Apache config, you can then use php_admin_setting apc.cache_by_default 1
inside a Directory
block to enable APC caching exactly where you need it.
Since apc.filters works with regular expressions, wildcard path should be specified as
apc.filters = "-/usr/share/psa-horde/.*"
Used:
apc.filters="-/eliminate/path1/,-/eliminate/path2/,+/add/to/cache/"