Nginx caminho errado para o arquivo de inclusão no CodeIgniter

1

Estou adicionando novas páginas no CI (CodeIgniter 3) incluindo rodapé, cabeçalho e outros arquivos .php (feitos pelo CodeCharge Studio), as páginas CI (controllers) estão rodando um arquivo /ci.php e tudo corre bem no Apache2.

Como eu também estou migrando no NginX, quando eu chamo o /ci.php ele funciona bem e quando eu chamo a mesma saída, mas a partir do /ci.php/pages/test_pages eu recebo a parte do corpo da minha página e erros acontecem aos meus arquivos incluídos:

[error] 12165#0: *698 FastCGI sent in stderr: "Unable to open primary script: /Users/fedibelkacem/Documents/workspace/eMashq/ci.php/pages/ClientI18N.php (No such file or directory)" while reading response header from upstream, client: 127.0.0.1, server: emashq.fbe, request: "GET /ci.php/pages/ClientI18N.php?file=Functions.js&locale=en HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "emashq.fbe:81", referrer: "http://emashq.fbe:81/ci.php/pages/test_pages"

O NginX está procurando Clientl18N.php no lugar errado. Está na raiz e como eu disse, no Apache, corre bem.

Aqui está o meu arquivo de configuração do NginX VHost:

server {
    listen 81;
    server_name emashq.fbe;

    root /Users/fedibelkacem/Documents/workspace/eMashq;

    index index.php index.html;

    location / {
            # if I put /index.php, it forces /ci.php/pages/test_pages to call 
            # /ci.php/pages/index.php and I get an other but the same type error 
            # with No input file specified on the screen!
            try_files $uri $uri/ /ci.php;
    }

    location ~* \.php$ {
            fastcgi_pass 127.0.0.1:9000;
            include fastcgi_params;
    }
}
# $config['index_page'] = 'ci.php'; // or = ‘’ in CI\applications\config.php 
# doesn’t make difference!

Por favor, ajude-me a encontrar o conf NginX correto para rodar o meu /ci.php/controller/etc.

    
por Fédi BELKACEM 11.11.2015 / 16:08

1 resposta

0

Veja este documento para uma série de sugestões para resolver o Passando Descontrolado Solicitações para o PHP problema.

O uri inclui pathinfo que deve ser tratado separadamente e transmitido para o script ci.php . Uma solução comum é alterar sua definição de local para algo como:

location ~ [^/]\.php(/|$) {
    fastcgi_split_path_info ^(.+?\.php)(/.*)$;
    ...
}

Veja também este documento . Nem todas as implementações têm as mesmas diretivas listadas no arquivo fastcgi_params . Você precisará garantir que as informações necessárias estejam sendo transmitidas ao seu controlador.

    
por 11.11.2015 / 17:15