我尝试了很多方法但无法使错误日志工作,但访问日志工作正常。
这里提到的解决方案对我来说不起作用:
http://mailman.nginx.org/pipermail/nginx/2009-February/009567.html(尝试将错误作为 error_log pram - 没有成功)
http://forum.nginx.org/read.php?2,58447,58447(停止 nginx 后没有陈旧进程)
以下是虚拟主机信息:
server {
server_name .qa.domain.ca;
root /var/www/qa.domain.ca;
access_log /var/log/nginx/qa.domain.ca/access.log;
error_log /var/log/nginx/qa.domain.ca/error.log;
index index.html index.htm index.php;
# redirect to non-www
if ($host ~* ^www\.(.*)){
set $host_without_www $1;
rewrite ^/(.*)$ $scheme://$host_without_www/$1 permanent;
}
if (-d $request_filename){
rewrite ^/(.*[^/])$ /$1/ permanent;
}
location / {
# First attempt to serve request as file, then
# as directory, then fall back to index.html
try_files $uri $uri/ /index.php;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
location ~ .php$ {
if (!-f $request_filename) {
return 404;
}
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;
include fastcgi_params;
}
}
答案1
您的设置(可能基于现有的众多过时的博客文章之一)效率低下。
这是一个更好的设置:
server {
server_name www.qa.domain.ca;
# redirect to non-www
return 301 http://qa.domain.ca$request_uri;
}
server {
server_name qa.domain.ca;
root /var/www/qa.domain.ca;
access_log /var/log/nginx/qa.domain.ca/access.log;
error_log /var/log/nginx/qa.domain.ca/error.log;
index index.html index.htm index.php;
# Using "if" for redirection is inefficient as every request will be tested
# Also, the "-d" test is redundant given the use of "try_files" below
location / {
# First attempt to serve request as file, then
# as directory, then fall back to index.html
try_files $uri $uri/ /index.php;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
location ~ .php$ {
# This "if" block will work as long as every php file physically exists
# and you don't use a php app that uses rewriting of pseudo files
# I personally prefer to use "location ~ \..*/.*\.php$ { return 400; }"
if (!-f $request_filename) {
return 404;
}
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;
include fastcgi_params;
}
}
至于 error_log 查询,没有理由它不能在任何配置下工作。
****编辑**** 似乎存在导致日志记录无法工作的原因:https://bugs.php.net/bug.php?id=61045
答案2
除了将 PHP 升级到最新版本外,还应该修复你遇到的错误,您还可以让 PHP 生成自己的错误日志。例如,我有一个系统,其中 PHP 记录到 syslog。您可以使用以下方式控制此操作指令error_log
在 php.ini 中。