Não é possível obter o rastreamento de pilha de erro ou o log de erros ao usar o php-fpm + nginx no Ubuntu 14.04

4

Estou usando o php-fpm 5.5.9 junto com o nginx 1.4.6 na minha máquina Ubuntu 14.04. Eu os instalei usando o gerenciador de pacotes apt-get. Não consigo obter um rastreamento de pilha do erro que meu script index.php encontra no log de erros, bem como no navegador. Eu procurei e implementei algumas soluções do stackoverflow e de outros artigos, mas nenhuma delas funcionou para mim. Aqui está meu conf nginx junto com meu arquivo conf php-fpm. Por favor, ajude-me se estou cometendo algum erro bobo.

Configuração do Nginx:

location ~ \.php$ {
        # With php5-fpm:
                #try_files $uri =404;
        include fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_intercept_errors on;
        fastcgi_read_timeout 600;
        fastcgi_send_timeout 600;
        proxy_connect_timeout  600;
        proxy_send_timeout  600s;
        proxy_read_timeout  600s;
        fastcgi_pass 127.0.0.1:7777;
        fastcgi_index index.php;
    }

Configuração do PHP-FPM:

error_log = /tmp/php5-fpm.log

Configuração do pool do PHP-FPM:

catch_workers_output = yes 
slowlog = /var/log/php-fpm/$pool.log.slow
listen = 127.0.0.1:7777

php_flag[display_errors] = On 
php_admin_value[error_log] = /tmp/fpm-php.www.log 
php_admin_flag[log_errors] = On

Obrigado antecipadamente.

    
por Tojo Chacko 08.07.2014 / 17:40

2 respostas

1

Tente colocar na configuração do seu site dentro da diretiva do servidor o seguinte:

access_log  /var/log/nginx/your_site.log;

error_log   /var/log/nginx/your_site.log;

substitua o your_site.log pelo nome do seu virtualhost - nome de domínio.

Exemplo completo:

php-fpm

/etc/php5/fpm/php-fpm.conf

[global]
pid = /var/run/php5-fpm.pid
error_log = /var/log/php5-fpm.log
include=/etc/php5/fpm/pool.d/*.conf

/etc/php5/fpm/pool.d

[www]
user = www-data
group = www-data
pm = dynamic
pm.max_children = 10
pm.start_servers = 4
pm.min_spare_servers = 2
pm.max_spare_servers = 6

Host virtual

upstream php {
        server unix:/tmp/php-cgi.socket;
        server 127.0.0.1:9000;
}

server {
    listen   80; ## listen for ipv4; this line is default and implied

    root /srv/www/mysite;
    index index.php;

    server_name mysite.com www.mysite.com;

    access_log  /var/log/nginx/mysite_access.log;
    error_log   /var/log/nginx/mysite_error.log;

    location / {
         try_files $uri $uri/ /index.php?$args; 
    }

    error_page 404 /404.html;

    error_page 500 502 503 504 /50x.html;

    location = /50x.html {
              root /usr/share/nginx/www;
        }



        location = /favicon.ico {
                log_not_found off;
                access_log off;
        }

        location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
        }

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9$
        location ~ \.php$ {
                #fastcgi_pass 127.0.0.1:9000;
                # With php5-fpm:
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;
                 }
        location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
                expires max;
        access_log off;
                log_not_found off;
        }
}
    
por Stef K 08.07.2014 / 18:05
0

Se você deseja os erros de execução de um script, isso está configurado em /etc/php5/fpm/php.ini .

Se você quiser erros em um arquivo de log, edite php.ini :

display_errors  = off 
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
error_log = /path/to/some/file.log

Se você quiser no navegador, edite php.ini :

display_errors  = on
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT

ou adicionando-o ao topo do script:

ini_set('display_errors',1);
error_reporting( E_ALL & ~E_DEPRECATED & ~E_STRICT );

Eu não sei como registrar o rastreamento da pilha diretamente no arquivo de log, mas aqui há uma maneira que você pode implementar definindo seu próprio manipulador de erros.

    
por bistoco 04.08.2015 / 11:00

Tags