Configurando o Nginx e o php5-fpm para trabalhar com o Codeigniter

2

Como estou tentando mudar do Apache 2 para o Nginx, enfrentei dezenas de problemas e ainda os consertei. De qualquer forma, estou tentando fazê-los funcionar, mas sem sorte ainda. Então, estou perguntando aqui procurando ajuda / experiência anterior.

Eu usei as configurações padrão para executar o PHP e ele funciona muito bem ao executar somente arquivos PHP. mas infelizmente a URL do codeigniter não termina em * .PHP. Então eu acho que o PHP-FPM não trata meus scripts como arquivos PHP, já que o URL não termina em *.PHP . Eu só estou adivinhando embora.

Então, existe alguma maneira possível de fazê-los trabalhar juntos? parece impossível para mim, eu tentei muitas configurações (depois de modificá-las para o meu ambiente, ofcource), mas nenhuma delas funcionava com o Codeigniter.

Espero que postar minhas configurações atuais que funcionam com arquivos php normais levará a algumas soluções.
Nota: Esse é exatamente o mesmo postado na página wiki do Nginx para a estrutura Codeigniter.

server {
        server_name _;#_ to catch all requests.

        root /usr/share/nginx/www;
        index index.html index.php;

        # set expiration of assets to MAX for caching
        location ~* \.(ico|css|js|gif|jpe?g|png)(\?[0-9]+)?$ {
                expires max;
                log_not_found off;
        }

        location / {
                # Check if a file exists, or route it to index.php.
                try_files $uri $uri/ /index.php;
        }

        location ~* \.php$ {
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_split_path_info ^(.+\.php)(.*)$;
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }
}

usando a configuração anterior para minha configuração /sites-enabled/default faz o PHP funcionar, mas não o codeigniter, tudo que eu obtenho são páginas brancas, e o custom 404 do codeigniter ao acessar arquivos inexistentes.

Eu também reconfigurei arquivos config.php como os seguintes:

$config['base_url'] = "http://localhost/";
$config['index_page']   = "";
$config['uri_protocol'] = "REQUEST_URI";

Eu tentei essas configurações e muitas outras, geralmente os mesmos resultados.

Enfim, há alguns pontos que (esperançosamente) me darão uma resposta:

1. Eu tentei estas configurações no Debian 6 / Ubuntu 12.04

2. Estou executando o último php5-fpm , nginx de apt-get .

3.Alguma coisa que eu notei, comentando SCRIPT_NAME e SCRIPT_FILENAME (no arquivo fastcgi_params ) faz com que codeigniter mostre um erro. no entanto, comentá-los na configuração atual acima não tem nenhum impacto.

4.File permissões para todos os arquivos em /usr/share é 777 , eu sei que é inseguro, mas eu estou usando para teste somente.

    
por Abdulaziz 31.07.2012 / 01:03

2 respostas

1

Eu encontrei a solução para esse problema. Não estava relacionado ao Codeigniter nem ao Nginx. o probem estava dentro do MySQL, uma vez que eu carrego a biblioteca de banco de dados que se conecta ao MySQL ao solicitar qualquer página. O MySQL em si não foi instalado de qualquer maneira, é por isso que nada funciona.

No Debain / Ubuntu, tudo que fiz foi apt-get install mysql-server mysql-client php5-mysql e, em seguida, configurei o mysql e reiniciei o php-fpm service php5-fpm restart . e você está pronto para ir.

    
por 31.07.2012 / 18:17
0

O try_files está redirecionando qualquer URL inexistente para index.php

A questão é que o bloco location ~ \.php não é levado em conta.

Recopie tudo dentro deste bloco no bloco acima, logo após o try_files.

    
por 05.02.2013 / 05:58