AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 888114
Accepted
Esa Jokinen
Esa Jokinen
Asked: 2017-12-15 04:23:38 +0800 CST2017-12-15 04:23:38 +0800 CST 2017-12-15 04:23:38 +0800 CST

Falta PATH_INFO no Apache 2.4/php5.6-fpm/proxy_fcgi

  • 772

Estou usando o Debian 9 com PHP-FPM 7.0.26-2e 5.6.32-1do 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.confdesse servidor.
  • Ambos os php.iniarquivos estão tendo cgi.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_NAMEe PATH_INFOestão completamente ausentes.

apache-2.4
  • 2 2 respostas
  • 2682 Views

2 respostas

  • Voted
  1. Best Answer
    Esa Jokinen
    2017-12-15T05:01:45+08:002017-12-15T05:01:45+08:00

    Foi assim que usei o proxy_fcgi. Conforme explicado nos exemplos para mod_proxy_fcgi:

    Você também pode forçar uma solicitação a ser tratada como uma solicitação de proxy reverso, criando uma passagem de manipulador adequada. - - O benefício deste formulário é que ele permite que o mapeamento normal de URI para nome de arquivo ocorra no servidor, e o resultado do sistema de arquivos local é passado para o backend. Quando o FastCGI é configurado dessa maneira, o servidor pode calcular os arquivos PATH_INFO.

    Então eu troquei meu

    ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/run/php/user.sock|fcgi://localhost/home/user/...
    

    com um manipulador e trabalhador:

        <FilesMatch "\.php$">
                SetHandler  "proxy:unix:/run/php/user.sock|fcgi://localhost"
        </FilesMatch>
        <Proxy "fcgi://localhost/" enablereuse=on max=10>
        </Proxy>
    

    Agora todas as solicitações AJAX estão funcionando bem.

    BÔNUS: Se alguém souber por que ProxyPassMatchfoi capaz de calcular o PATH_INFOantes no meu Debian 8 / Apache 2.4.10 / PHP-FPM 5.6.30, mas não com o Debian 9, isso seria incrível.

    • 2
  2. klor
    2018-10-14T11:09:25+08:002018-10-14T11:09:25+08:00

    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:

    variáveis ​​ambientais

    Além das diretivas de configuração que controlam o comportamento do mod_proxy, existem várias variáveis ​​de ambiente que controlam o provedor de protocolo FCGI:

    • proxy-fcgi-pathinfo : Quando configurado via ProxyPass ou ProxyPassMatch, mod_proxy_fcgi não definirá a variável de ambiente PATH_INFO. Isso permite que o servidor FCGI de back-end determine corretamente SCRIPT_NAME e Script-URI e seja compatível com RFC 3875 seção 3.3. Se, em vez disso, você precisar de mod_proxy_fcgi para gerar um "melhor palpite" para PATH_INFO, defina este env-var. Esta é uma solução para um bug em algumas implementações FCGI. Essa variável pode ser definida para vários valores para ajustar como a melhor estimativa é escolhida (somente na versão 2.4.11 e posterior):

      • first-dot : PATH_INFO é dividido da barra após o primeiro "." na URL.

      • last-dot : PATH_INFO é dividido da barra após o último "." na URL.

      • full : PATH_INFO é calculado por uma tentativa de mapear a URL para o sistema de arquivos local.

      • unescape : PATH_INFO é o componente de caminho da URL, sem escape / decodificado.

      • qualquer outro valor : PATH_INFO é o mesmo que o componente de caminho da URL. Originalmente, esta era a única opção proxy-fcgi-pathinfo.

    • 2

relate perguntas

  • Apache2 - SSL não está funcionando

  • Apache <VirtualHost> tag, NÃO redirecione se o IP do cliente = x... como fazer isso?

  • Não consigo habilitar meu site? [fechado]

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve