Рейтинг:0

Ошибки PHP появляются в контейнерах PHP и Nginx

флаг cn

Недавно я экспериментировал с переходом от локального ведения журнала на основе файлов в приложении PHP к отправке ошибок PHP через стандартный вывод, чтобы они выводились вместе с другими журналами в настройке докера. Это работает нормально, если вы установите журнал ошибок место для /dev/стандартный вывод затем я вижу ошибки из PHP через хвостовые журналы докеров. Однако эти же ошибки также появляются в контейнере nginx, как показано ниже через «FastCGI, отправленный в stderr»:

docker-compose-nginx-phpfpm-php-fpm-1 | ВНИМАНИЕ: сообщение PHP: тест
docker-compose-nginx-phpfpm-php-fpm-1 | 172.18.0.3 - 18 января 2022:20:00:20 +0000 "GET /index.php" 200
docker-compose-nginx-phpfpm-web-1 | 18.01.2022 20:00:20 [ошибка] 32#32: *18 FastCGI отправлено в stderr: «Сообщение PHP: тест» при чтении заголовка ответа от восходящего потока, клиент: 172.18.0.1, сервер: phpfpm.local, запрос : "GET / HTTP/1.1", восходящий поток: "fastcgi://172.18.0.2:9000", хост: "localhost:8080"

Для ясности:

Журнал контейнера PHP

docker-compose-nginx-phpfpm-php-fpm-1 | ВНИМАНИЕ: сообщение PHP: тест

Журнал контейнера Nginx

docker-compose-nginx-phpfpm-web-1 | 18.01.2022 20:00:20 [ошибка] 32#32: *18 FastCGI отправлено в stderr: «Сообщение PHP: тест» при чтении заголовка ответа от восходящего потока, клиент: 172.18.0.1, сервер: phpfpm.local, запрос : "GET / HTTP/1.1", восходящий поток: "fastcgi://172.18.0.2:9000", хост: "localhost:8080"

Что тут происходит? это ожидаемое поведение?

Это результат очень простой и стандартной настройки php-fpm/nginx с таким docker-compose.yml:

версия: "3.9"

Сервисы:
    веб:
        изображение: nginx: последний
        порты:
            - "8080:80"
        тома:
            - ./src:/var/www/html
            - ./default.conf:/etc/nginx/conf.d/default.conf
        ссылки:
            - PHP-FPM
    php-fpm:
        изображение: php:8-fpm
        тома:
            - ./src:/var/www/html

default.conf, например:

сервер {
    индекс index.php index.html;
    имя_сервера phpfpm.local;
    журнал_ошибок /var/log/nginx/error.log;
    журнал_доступа /var/log/nginx/access.log;
    корень /var/www/html;

    расположение ~ \.php$ {
        try_files $uri = 404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php-fpm:9000;
        fastcgi_index index.php;
        включить fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

и index.php, например:

<?php
ini_set('display_errors', 'выключено');
ini_set('error_log', '/dev/stdout');
error_log('тест');
эхо phpinfo();

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.