Назад | Перейти на главную страницу

Журнал ошибок Nginx не работает

Я пробовал много вещей, но не смог заставить работать журнал ошибок, однако журнал доступа работает нормально.

упомянутое здесь решение не сработало для меня:

http://mailman.nginx.org/pipermail/nginx/2009-Feb 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;
        }
}

Ваша установка, вероятно, основанная на одном из многих устаревших сообщений в блогах, неэффективна.

Вот лучшая установка:

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, нет причин, по которым он не должен работать ни в одной из конфигураций.

**** EDIT **** Кажется, может быть причина, по которой ведение журнала может не работать: https://bugs.php.net/bug.php?id=61045

Помимо обновления PHP до последней версии, в которой должно быть исправлено ошибка, с которой вы столкнулись, вы также можете настроить PHP для создания собственных журналов ошибок. Например, у меня есть система, в которой PHP регистрируется в системном журнале. Вы можете контролировать это с помощью в error_log директива в php.ini.