web-dev-qa-db-fra.com

Impossible d'obtenir la trace d'erreur de la pile ou le journal des erreurs lors de l'utilisation de php-fpm + nginx sur Ubuntu 14.04

J'utilise php-fpm 5.5.9 avec nginx 1.4.6 sur ma machine Ubuntu 14.04. Je les ai installés en utilisant apt-get package manager. Je ne parviens pas à obtenir une trace de la pile de l'erreur que mon script index.php rencontre dans le journal des erreurs, ainsi que sur le navigateur. J'ai cherché et mis en œuvre plusieurs solutions de stackoverflow et d'autres articles, mais aucune d'entre elles ne fonctionnait pour moi. Voici ma conf Nginx avec mon fichier conf php-fpm. S'il vous plaît aidez-moi si je fais une erreur stupide.

Configuration 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;
    }

Configuration PHP-FPM:

error_log = /tmp/php5-fpm.log

Configuration du pool 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

Merci d'avance.

4
Tojo Chacko

Essayez de mettre dans la configuration de votre site dans la directive server les éléments suivants:

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

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

remplacez le your_site.log par le nom de votre virtualhost - nom de domaine.

Exemple complet:

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

hôte virtuel

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;
        }
}
1
Stef K

Si vous voulez les erreurs d'exécution d'un script, c'est configuré sur /etc/php5/fpm/php.ini.

Si vous voulez des erreurs dans un fichier journal, éditez php.ini:

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

Si vous les voulez sur le navigateur, éditez php.ini:

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

ou en l'ajoutant au-dessus du script:

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

Je ne sais pas comment enregistrer la trace de pile directement sur le fichier journal, mais ici il existe un moyen d'implémenter la définition de votre propre gestionnaire d'erreurs.

0
bistoco