NGINX/PHP7.4-FPM выдает 502 без включенного error_reporting

вчера столкнулся со странной проблемой. Внезапно конкретный PHP-скрипт перестал работать, выдал ошибку 502. Когда я включил error_reporting, отображаются только уведомления/предупреждения, но остальная часть страницы отображается правильно. Когда я снова отключаю error_reporting("E_ALL"); ini_set("display_errors", 1);, NGINX снова выдает 502.

Странно, когда я ловлю уведомления/предупреждения со следующим фрагментом:

function myErrorHandler($errno, $errstr, $errfile, $errline)
{
    if ($errno == E_USER_NOTICE){
    }
}

set_error_handler("myErrorHandler");

страница отображается правильно, очевидно, без отображения ошибок.

Версия Debian: 4.9.0-6-amd64 #1 SMP Debian 4.9.88-1+deb9u1 (07.05.2018) x86_64

Версия PHP: php7.4-fpm

Версия NGINX: nginx/1.10.3

Может быть это проблема с памятью? Или есть у кого-то другое объяснение, почему так происходит?

Код не устанавливает заголовок ответа, так как я нигде не устанавливаю заголовки. Я также не использую обработчик ошибок, я просто активирую error_reporting, когда что-то не работает. Если все работает, я отключаю display_errors, чтобы уведомления/предупреждения не отображались.

Если я удалю следующую строку своего файла, он также будет работать без обнаружения ошибок: $list = $tn->getMassnahmen();

$tn — это экземпляр моего класса teilnehmer: $tn = new teilnehmer;

Код 'getMassnahmen':

    function getMassnahmen()
    {
        $stmt = $this->db->prepare('SELECT * FROM `massnahmen_txt` ORDER BY `id` ASC');
        if ($stmt->execute()) {
            while ($row = $stmt->fetch()) {
                $result[] = $row;
            }
        }

        return $result;
    }

«teilnehmer» — мои клиенты. К клиентам могут быть добавлены файлы (разные таблицы базы данных). Ошибка почему-то возникает только в том случае, если у клиентов добавлены файлы. Если я закомментирую весь раздел, касающийся файлов в моем коде, ошибка все равно возникает. Поможет только удаление строки $list = $tn->getMassnahmen();. Но эта строка НЕ ​​имеет никакого отношения к файлам. Они используют только один и тот же класс.

Класс/экземпляр teilnehmer ($tn) уже несколько раз использовался в коде без каких-либо ошибок.

Журнал ошибок:

Notice:  Undefined variable: nocal in /PATH//html/inc/global.inc.php on line 34
Notice:  Undefined variable: result in /PATH//html/classes/user.php on line 672
Warning:  sizeof(): Parameter must be an array or an object that implements Countable in /PATH//html/inc/global.inc.php on line 57
Notice:  Undefined variable: newdates in /PATH//html/inc/global.inc.php on line 101
Warning:  sizeof(): Parameter must be an array or an object that implements Countable in /PATH//html/inc/global.inc.php on line 101
Notice:  Undefined variable: list in /PATH//html/inc/global.inc.php on line 113
Notice:  Undefined variable: is_index in /PATH//html/inc/global.inc.php on line 120
Notice:  Undefined variable: result in /PATH//html/classes/user.php on line 898
Warning:  sizeof(): Parameter must be an array or an object that implements Countable in /PATH//html/inc/global.inc.php on line 129
Notice:  Undefined variable: calendar in /PATH//html/inc/global.inc.php on line 133
Notice:  Undefined variable: result in /PATH//html/classes/user.php on line 898
Notice:  Undefined variable: result in /PATH//html/classes/mandanten.php on line 48
Warning:  sizeof(): Parameter must be an array or an object that implements Countable in /PATH//html/inc/global.inc.php on line 144
Notice:  Undefined variable: result in /PATH//html/classes/user.php on line 1425
Warning:  sizeof(): Parameter must be an array or an object that implements Countable in /PATH//html/inc/global.inc.php on line 190
Warning:  array_walk() expects parameter 2 to be a valid callback, class 'user' does not have a method 'htmlspecialcharsArray' in /PATH//html/classes/user.php on line 224
Warning:  array_walk() expects parameter 2 to be a valid callback, class 'user' does not have a method 'htmlspecialcharsArray' in /PATH//html/classes/user.php on line 224
Warning:  array_walk() expects parameter 2 to be a valid callback, class 'user' does not have a method 'htmlspecialcharsArray' in /PATH//html/classes/user.php on line 224
Warning:  array_walk() expects parameter 2 to be a valid callback, class 'user' does not have a method 'htmlspecialcharsArray' in /PATH//html/classes/user.php on line 224
Warning:  array_walk() expects parameter 2 to be a valid callback, class 'user' does not have a method 'htmlspecialcharsArray' in /PATH//html/classes/user.php on line 224
Warning:  array_walk() expects parameter 2 to be a valid callback, class 'user' does not have a method 'htmlspecialcharsArray' in /PATH//html/classes/user.php on line 224
Warning:  array_walk() expects parameter 2 to be a valid callback, class 'user' does not have a method 'htmlspecialcharsArray' in /PATH//html/classes/user.php on line 224
Warning:  array_walk() expects parameter 2 to be a valid callback, class 'user' does not have a method 'htmlspecialcharsArray' in /PATH//html/classes/user.php on line 224
Warning:  array_walk() expects parameter 2 to be a valid callback, class 'user' does not have a method 'htmlspecialcharsArray' in /PATH//html/classes/user.php on line 224
Warning:  array_walk() expects parameter 2 to be a valid callback, class 'user' does not have a method 'htmlspecialcharsArray' in /PATH//html/classes/user.php on line 224
Warning:  array_walk() expects parameter 2 to be a valid callback, class 'user' does not have a method 'htmlspecialcharsArray' in /PATH//html/classes/user.php on line 224
Warning:  array_walk() expects parameter 2 to be a valid callback, class 'user' does not have a method 'htmlspecialcharsArray' in /PATH//html/classes/user.php on line 224
Warning:  array_walk() expects parameter 2 to be a valid callback, class 'user' does not have a method 'htmlspecialcharsArray' in /PATH//html/classes/user.php on line 224
Warning:  array_walk() expects parameter 2 to be a valid callback, class 'user' does not have a method 'htmlspecialcharsArray' in /PATH//html/classes/user.php on line 224
Warning:  array_walk() expects parameter 2 to be a valid callback, class 'user' does not have a method 'htmlspecialcharsArray' in /PATH//html/classes/user.php on line 224
Notice:  Undefined index: success in /PATH//html/teilnehmer_edit.php on line 17
Notice:  Undefined index: removedfile in /PATH//html/teilnehmer_edit.php on line 21
Notice:  Undefined index: successremovelog in /PATH//html/teilnehmer_edit.php on line 26
Notice:  Undefined index: fehltag_add in /PATH//html/teilnehmer_edit.php on line 65
Notice:  Undefined index: remove_fehltag in /PATH//html/teilnehmer_edit.php on line 142
Notice:  Undefined variable: content in /PATH//html/teilnehmer_edit.php on line 248
Notice:  Undefined variable: active_fehltage in /PATH//html/teilnehmer_edit.php on line 257
Notice:  Undefined variable: kursdata in /PATH//html/teilnehmer_edit.php on line 281
Notice:  Undefined variable: statusdata in /PATH//html/teilnehmer_edit.php on line 282
Notice:  Undefined variable: tabledata in /PATH//html/classes/template.php on line 134
Notice:  Undefined variable: result in /PATH//html/classes/teilnehmer.php on line 606
Warning:  sizeof(): Parameter must be an array or an object that implements Countable in /PATH//html/teilnehmer_edit.php on line 300
Warning:  sizeof(): Parameter must be an array or an object that implements Countable in /PATH//html/teilnehmer_edit.php on line 314
Notice:  Undefined variable: filelist in /PATH//html/teilnehmer_edit.php on line 387
Notice:  Undefined variable: fehlliste in /PATH//html/teilnehmer_edit.php on line 676
Notice:  Trying to access array offset on value of type bool in /PATH//html/teilnehmer_edit.php on line 699
Notice:  Undefined variable: aglist in /PATH//html/teilnehmer_edit.php on line 740
Notice:  Undefined index: name in /PATH//html/teilnehmer_edit.php on line 742
Notice:  Undefined index: name in /PATH//html/teilnehmer_edit.php on line 742
Notice:  Undefined variable: result in /PATH//html/classes/teilnehmer.php on line 684
Warning:  sizeof(): Parameter must be an array or an object that implements Countable in /PATH//html/teilnehmer_edit.php on line 752
Notice:  Undefined variable: list1 in /PATH//html/teilnehmer_edit.php on line 776
Notice:  Undefined variable: mlist in /PATH//html/teilnehmer_edit.php on line 796

Заранее спасибо за помощь!


person Chris    schedule 06.06.2020    source источник
comment
Нам нужно больше информации/кода, чтобы полностью ответить на этот вопрос. это может быть ваш обработчик ошибок по умолчанию, возможно, где-то в коде заголовок ответа установлен на 503. Пожалуйста, предоставьте дополнительную информацию   -  person YouriKoeman    schedule 06.06.2020
comment
Я отредактировал свой основной пост. Спасибо!   -  person Chris    schedule 06.06.2020
comment
и последнее, что было бы очень полезно, можете ли вы распечатать ошибки, когда вы поймаете их своим фрагментом? возможно, в них будет полезная информация.   -  person YouriKoeman    schedule 06.06.2020
comment
Я добавил журнал ошибок в основной пост. Кроме того, я исправил код ошибки. NGINX выдает 502 вместо 503.   -  person Chris    schedule 06.06.2020
comment
Я подозреваю, что происходит тайм-аут, можете ли вы установить set_time_limit(0) и в nginx настроить тайм-аут на что-то высокое.   -  person YouriKoeman    schedule 06.06.2020
comment
Я думаю, что только что нашел ошибку в журнале ошибок NGINX: 2020/06/06 16:00:39 [error] 932#932: *7874 upstream sent too big header while reading response header from upstream, Эти уведомления / предупреждения PHP также отправляются через заголовок или что может быть причиной этого?   -  person Chris    schedule 06.06.2020
comment
Это означает, что возвращенный ответ слишком велик для буфера fastcgi, что определенно может быть проблемой. просто увеличить размеры буфера   -  person YouriKoeman    schedule 06.06.2020
comment
подробнее об этом здесь gist.github.com/magnetikonline/   -  person YouriKoeman    schedule 06.06.2020
comment
Это сделало это! Большое спасибо!   -  person Chris    schedule 06.06.2020


Ответы (1)


После настройки

fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;

в моей конфигурации nginx проблема решена. Похоже, что размер буфера для fastcgi был недостаточно большим для ответа. Спасибо большое за вашу помощь!

person Chris    schedule 06.06.2020