I got to scratch my head on this one for a while. If you’re writing a PHP-FPM config for Apache 2.4, don’t use the ProxyPassMatch directive to pass PHP requests to your FPM daemon.
This will cause you headaches:
# don't
<IfModule mod_proxy.c>
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/
</IfModule>
You will much rather want to use a FilesMatch block and refer those requests to a SetHandler that passes everything to PHP.
# do this instead
# Use SetHandler on Apache 2.4 to pass requests to PHP-FPM
<FilesMatch \.php$>
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
Why is this? Because the ProxyPassMatch directives are evaluated first, before the FilesMatch configuration is being run.
That means if you use ProxyPassMatch, you can’t deny/allow access to PHP files and can’t manipulate your PHP requests in any way anymore.
So for passing PHP requests to an FPM daemon, you’d want to use FilesMatch + SetHandler, not ProxyPassMatch.