Acabo de instalar un servidor nginx + php-fpm. Todo parece estar bien, excepto que PHP-FPM nunca escribe errores en su registro.
fpm.conf
[default]
listen = /var/run/php-fpm/default.sock
listen.allowed_clients = 127.0.0.1
listen.owner = webusr
listen.group = webusr
listen.mode = 0666
user = webusr
group = webusr
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.status_path = /php/fpm/status
ping.path = /php/fpm/ping
request_terminate_timeout = 30s
request_slowlog_timeout = 10s
slowlog = /var/log/php-fpm/default/slow.log
chroot = /var/www/sites/webusr
catch_workers_output = yes
env[HOSTNAME] = mapsvr.mapking.com
php_flag[display_errors] = on
php_admin_value[error_log] = /var/log/php-fpm/default/error.log
php_admin_flag[log_errors] = on
nginx.conf
server
{
listen 80 default_server;
server_name _;
charset utf-8;
access_log /var/log/nginx/access.log rest;
include conf.d/drops.conf.inc;
location /
{
root /var/www/sites/webusr/htdocs;
index index.html index.htm index.php;
}
# pass the PHP scripts to FastCGI server listening on socket
#
location ~ \.php$
{
root /var/www/sites/webusr/htdocs;
include /etc/nginx/fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /htdocs/$fastcgi_script_name;
if (-f $request_filename)
{
fastcgi_pass unix:/var/run/php-fpm/default.sock;
}
}
location = /php/fpm/status
{
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/var/run/php-fpm/default.sock;
}
location = /php/fpm/ping
{
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/var/run/php-fpm/default.sock;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html
{
root /usr/share/nginx/html;
}
}
Hice un script php erróneo y ejecuté, y veo la salida de error en el navegador web. También el registro de errores de nginx indica la salida stderr de fpm con el mismo mensaje. Verifiqué que el usuario tenga permiso de escritura (incluso he intentado 777) para la carpeta de registro designada. Incluso el archivo designado error.log ha sido creado con éxito por php-fpm. Sin embargo, el archivo de registro siempre está vacío, no importa qué error escandaloso se haya hecho desde el script php.
¿Que esta pasando?
[Encontró la razón bastante tiempo después]
Fue permiso. Cambió el propietario a los usuarios de los sitios resuelto el problema.
Respuestas:
Esto funcionó para mí:
Editar:
El archivo a editar es el archivo que configura su grupo deseado. Por defecto es: /etc/php-fpm.d/www.conf
fuente
/etc/php-fpm.d/www.conf
php_admin_value[error_log]
ese mismo archivo de configuración - /var/log/php-fpm/www-error.log en CentOS 7 por ejemplosudo vi /etc/php/7.0/fpm/pool.d/www.conf
para míLuché con esto durante mucho tiempo antes de encontrar que mis registros de php-fpm estaban siendo escritos
/var/log/upstart/php5-fpm.log
. Parece ser un error entre cómo interactúan el advenedizo y php-fpm. Ver más aquí: https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1319595fuente
ln -sf /var/log/upstart/php5-fpm.log /var/log/php5-fpm.log
/var/log/php7.0-fpm.log
,php_admin_value[error_log] = /var/log/fpm-php.www.log
¿redirigirá a un registro no estándar?Tuve un problema similar y tuve que hacer lo siguiente al
pool.d/www.conf
archivoTodavía no estaba escribiendo el archivo de registro, así que tuve que crearlo
touch /var/log/fpm-php.www.log
configurando el propietario correctosudo chown www-data:www-data /var/log/fpm-php.www.log
.Una vez hecho esto, y se reinició php5-fpm, se reanudó el registro.
fuente
Hay varios archivos de configuración de php, pero ESTE es el que necesita editar:
descomenta la línea que dice:
Eso permitirá que PHP stderr vaya al registro de errores de php-fpm en lugar de / dev / null.
fuente
/usr/local/etc/php-fpm.d/
/var/log/php7.0-fpm.log
, en/var/log/fpm-php.www.log
u otro?Reuní ideas de un montón de respuestas aquí y presento una solución integral:
Entonces, si configura nginx con php5-fpm y registra un mensaje usando
error_log()
, puede verlo de manera/var/log/nginx/error.log
predeterminada.Puede surgir un problema si desea registrar una gran cantidad de datos (digamos una matriz) usando
error_log(print_r($myArr, true));
. Si una matriz es lo suficientemente grande, parece quenginx
truncará su entrada de registro.Para evitar esto, puede configurar
fpm
( php.net fpm config ) para administrar registros. Aquí están los pasos para hacerlo.Abierto
/etc/php5/fpm/pool.d/www.conf
:$ sudo nano /etc/php5/fpm/pool.d/www.conf
Elimine el comentario de las dos líneas siguientes eliminando
;
al principio de la línea: (error_log se define aquí: php.net );php_admin_value[error_log] = /var/log/fpm-php.www.log ;php_admin_flag[log_errors] = on
Crear
/var/log/fpm-php.www.log
:$ sudo touch /var/log/fpm-php.www.log;
Cambie la propiedad de
/var/log/fpm-php.www.log
para que php5-fpm pueda editarlo:$ sudo chown vagrant /var/log/fpm-php.www.log
Nota:
vagrant
es el usuario al que debo otorgar la propiedad. Puede ver qué usuario debería ser para usted ejecutando$ ps aux | grep php.*www
y mirando la primera columna.Reinicie php5-fpm:
$ sudo service php5-fpm restart
Ahora tus registros estarán adentro
/var/log/fpm-php.www.log
.fuente
phpinfo()
y vea si estas configuraciones realmente se recogieron, @SudharshanNair./var/log/fpm-php.www.log
. Todavía este archivo está vacíolog_errors
errores están activados, lo único que se debe verificar es el permiso y la propiedad del archivo (paso 4).www-data:www-data
, todavía no tuve suerte. Alguna idea ?Hay un error https://bugs.php.net/bug.php?id=61045 en php-fpm desde v5.3.9 y hasta ahora (5.3.14 y 5.4.4). La solución prometida por el desarrollador se lanzará en la próxima versión. Si no quiere esperar, use el parche en esa página y vuelva a compilar o revierta a 5.3.8.
fuente
En su archivo fpm.conf no ha configurado 2 variables que son solo para el registro de errores.
Las variables son
error_log
(ruta del archivo de registro de errores) ylog_level
(nivel de registro de errores).fuente
/usr/local/var/php
lugar de/usr/local/php/var
? solo especulando.en mi caso muestro que el registro de errores iba a /var/log/php-fpm/www-error.log . así que comenté esta línea en /etc/php-fpm.d/www.conf
y como dije anteriormente, también descomenté esta línea
Ahora puedo ver registros en el archivo especificado por nginx.
fuente
Me gustaría agregar otro consejo a las respuestas existentes porque no resolvieron mi problema.
Tenga cuidado con la siguiente directiva nginx en su bloque de ubicación php:
Eliminar esta línea ha puesto fin a muchas horas de lucha y tirones del cabello.
Podría estar oculto en algún directorio conf incluido, como
/etc/nginx/default.d/php.conf
en mi fedora.fuente
En mi caso, php-fpm genera un error de 500 sin ningún registro debido a la falta del módulo php-mysql. Moví la instalación de Joomla a otro servidor y lo olvidé. Entonces,
apt-get install php-mysql
y el reinicio del servicio lo resolvió.Comencé tratando de arreglar el registro roto sin éxito. Finalmente,
strace
encontré un mensaje de error después de las llamadas al sistema relacionadas con db. Aunque mi caso no está directamente relacionado con la pregunta de op, espero que pueda ser útil.fuente
Consulte el directorio del propietario de "PHP-FPM"
Tu puedes hacer:
fuente