Após alguns dias de luta, eu capturei e examinei cabeçalhos CGI enviados entre o Apache e o PHP-FPM e testei o mesmo também com diferentes versões dos componentes. Acontece que diferentes versões do Apache definem a variável SCRIPT_FILENAME
de forma diferente, o que não é contabilizado no PHP-FPM.
Apache 2.4.18 (padrão no Ubuntu 16.04 que eu uso) preenche a variável da seguinte forma:
SCRIPT_FILENAME proxy:fcgi://localhost/srv/www/index.php
Considerando os conjuntos do Apache 2.4.25:
SCRIPT_FILENAME /srv/www/index.php
A documentação do Apache de mod_proxy_fcgi menciona uma diretiva ProxyFCGIBackendType disponível desde o Apache 2.4.26 ( não lançado ainda a partir de 2017-05-02), cujo padrão é "FPM". Há uma nota a seguir na descrição:
One example of values that change based on the setting of this directive is SCRIPT_FILENAME. When using mod_proxy_fcgi historically, SCRIPT_FILENAME was prefixed with the string "proxy:fcgi://". This variable is what some generic FastCGI applications would read as their script input, but PHP-FPM would strip the prefix then remember it was talking to Apache. In 2.4.21 through 2.4.25, this prefix was automatically stripped by the server, breaking the ability of PHP-FPM to detect and interoperate with Apache in some scenarios.
Parece que coincidentemente encontrei "algum cenário". A resposta à minha pergunta é: Não use o Apache 2.4.21 até 2.4.25, pois eles contêm um bug. Use uma versão inferior ou espere por uma versão mais recente em que o bug foi corrigido.