Estou usando o Debian 9 com PHP-FPM 7.0.26-2
e 5.6.32-1
do repositório deb.sury.org. A mesma configuração está funcionando bem em um servidor Debian 8 com PHP-FPM5.6.30
- Eu copiei o
pool.d/user.conf
desse servidor. - Ambos os
php.ini
arquivos estão tendocgi.fix_pathinfo=1
. - O parâmetro também é forçado usando
php_admin_value[cgi.fix_pathinfo] = 1
. Ambos os servidores usam esse pool de maneira semelhante no
<VirtualHost>
contexto com:ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/run/php/user.sock|fcgi://localhost/home/user/public_html
Agora, há uma página AJAX que precisa ler o caminho de PATH_INFO
(possivelmente PATH_TRANSLATED
). No entanto, embora essas variáveis tenham conteúdo correto no servidor Debian 8:
["SCRIPT_NAME"]=>
string(14) "/path/ajax.php"
["ORIG_SCRIPT_NAME"]=>
string(25) "/path/ajax.php/para/meters"
["PATH_INFO"]=>
string(12) "/para/meters"
["PATH_TRANSLATED"]=>
string(34) "/home/user/public_html/para/meters"
Eles parecem funcionar de maneira diferente no novo Debian 9 + dub.sury.org:
["SCRIPT_NAME"]=>
string(25) "/path/ajax.php/para/meters"
["PATH_TRANSLATED"]=>
string(22) "/home/user/public_html"
E os prameters ORIG_SCRIPT_NAME
e PATH_INFO
estão completamente ausentes.
Foi assim que usei o proxy_fcgi. Conforme explicado nos exemplos para
mod_proxy_fcgi
:Então eu troquei meu
com um manipulador e trabalhador:
Agora todas as solicitações AJAX estão funcionando bem.
BÔNUS: Se alguém souber por que
ProxyPassMatch
foi capaz de calcular oPATH_INFO
antes no meu Debian 8 / Apache 2.4.10 / PHP-FPM 5.6.30, mas não com o Debian 9, isso seria incrível.Como está descrito em:
https://httpd.apache.org/docs/2.4/mod/mod_proxy_fcgi.html#env
O motivo pelo qual o ProxyPassMatch não define o PATH_INFO é o seguinte: