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