В php есть замечательное расширение Zend OPcache, которое, как и большинство php акселераторов, кэширует скомпилированный php-байткод, тем самым увеличивая производительность php приложений.

Но что, если у вас на сервере есть php приложение, которое не нужно кэшировать таким образом? Это может быть тестовая инсталляция какого-нибудь фреймворка или CMS, редко используемое приложение, например phpMyAdmin, или что-то подобное.

Для этого в настройках расширения есть опция opcache.blacklist_filename, в которой можно указать путь к файлу, содержащему "черный список" файлов (OPcache blacklist), не требующих кэширования. Кроме того, если вам необходимо исключить целое приложение, то вы можете указать все его файлы, используя шаблоны, например /var/www/phpmyadmin/*.php

Файл черного списка содержит имена файлов, которые не нужно ускорять, по одной записи на строку. Допустимы шаблоны поиска и префиксы.

php.net/manual

A blacklist file is a text file containing the names of files that should not be accelerated, one per line. Wildcards are allowed, and prefixes can also be provided.

zend.com/help

Но почему-то в этих мануалах не указано, что шаблоны поиска (wildcards) работают только в *nix системах. Если вы работаете под Windows, использование символов "*" и "?" приводит к некорректной работе Zend OPcache.

На ВМ с Windows 7 x86 SP1 были установлены Apache/2.4.27 и PHP/7.1.9. При добавлении в файл черного списка строки:

c:\apache\htdocs\pma\*

содержимое папки c:\apache\htdocs\pma\ кэшируется, т.е. наш OPcache blacklist игнорируется. Если же заменить строку на:

c:\apache\htdocs\pma\

то все идет как надо — c:\apache\htdocs\ кэшируется, c:\apache\htdocs\pma\ пропускается.

Также была проведена проверка на популярной сборке XAMPP (Windows 7 x64 SP1, Apache/2.4.23, PHP/7.0.13). В отличии от первого эксперимента, здесь при использовании символа "*" кэш переставал работать вообще и все файлы попадали в черный список.

ВОЗМОЖНО, это связано с приведенным ниже участком кода

/* Resolve path relatively to state and put the real path into state */
/* returns 0 for ok, 1 for error */
CWD_API int virtual_file_ex(cwd_state *state, const char *path, verify_path_func verify_path, int use_realpath)
{

/*
...
SOME CODE
...
*/

#ifdef ZEND_WIN32
	if (memchr(resolved_path, '*', path_length) ||
		memchr(resolved_path, '?', path_length)) {
		return 1; /* возврат единицы, как видно из аннотации к функции, означает ошибку */
	}
#endif

/*
...
SOME CODE
...
*/

}

github.com/php/php-src

Заключение

Таким образом, похоже, что для корректной работы Zend OPcache blacklist в Windows, в нем нельзя использовать символы "*" и "?". Если же нужно исключить какую-либо папку, то нужно просто указать путь к ней, например C:\sites\example.com\public-html\.