Рейтинг:0

Sentry с PHP и nginx: больше не возникают ошибки в панели управления sentry

флаг gb

Я застрял в своей конфигурации nginx (nginx/1.14.2) для приложения php (php-7.4), которое обычно отправляет уведомления об ошибках в часовой.

Я переместил php-приложение с сервера apache на сервер nginx, и теперь о моих ошибках сентри больше не сообщается ... что я сделал не так?

вот мой конфиг nginx:

сервер {

    корень /var/www/services/some-seservice;

    индекс index.php;

    имя_сервера *****.com;

     журнал_доступа /var/log/nginx/some-service.access.log;
     error_log /var/log/nginx/some-service.error.log;

    место расположения / {
        try_files $uri $uri//index.php;
    }
    расположение ~ .php$ {
        включить фрагменты/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php-fpm.sock;
    }

    слушать [::]:443 ssl ipv6only=on; # под управлением Certbot
    слушать 443 ssl; # под управлением Certbot
    ssl_certificate /etc/letsencrypt/live/*****./fullchain.pem; # под управлением Certbot
    ssl_certificate_key /etc/letsencrypt/live/*****./privkey.pem; # под управлением Certbot
    включить /etc/letsencrypt/options-ssl-nginx.conf; # под управлением Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # под управлением Certbot

}
сервер {
    если ($ хост = *****.com) {
        вернуть 301 https://$host$request_uri;  
    } # управляется Certbot


    слушать 80;
    слушать [::]:80;

    имя_сервера *****.com;
    вернуть 404; # под управлением Certbot


}

и мой вызов php


    Sentry\init(['dsn' => 'https://*****.ingest.sentry.io/***' ]);
    throw new Exception("Sentry работает на машине ".$_ENV['ENV']."!");

Пока композитор установлен с использованием этой части composer.json

"требовать": {
        "сентри/СДК": "^3.1",
....

Любые идеи или идеи, как это отладить?

ОБНОВИТЬ

Файл журнала ошибок находит это (поэтому ошибка фиксируется):

02.07.2021, 13:22:12 [ошибка] 17232#17232: *193 FastCGI отправлено в stderr: «Сообщение PHP: Неустранимая ошибка PHP: Неперехваченное исключение: Sentry работает на тестовой машине! в /var/www/services/ какой-то сервис/Конфигурация/sentryloader.php:13
Трассировки стека:
#0 /var/www/services/some-service/Config/bootstrap.php(15): include()
#1 /var/www/services/some-service/index.php(6): include('/var/www/servic...')
#2 {основной}
  брошено в /var/www/services/some-service/Config/sentryloader.php в строке 13 "при чтении заголовка ответа из восходящего потока, клиент: ****ip****, сервер: ****.com, запрос: "GET /get HTTP/1.1", восходящий поток: "fastcgi://unix:/var/run/php/php-fpm.sock:", хост: "****.com"

ОБНОВИТЬ: фрагменты /fastcgi-php.conf :

# регулярное выражение для разделения $uri на $fastcgi_script_name и $fastcgi_path
fastcgi_split_path_info ^(.+?\.php)(/.*)$;

# Проверяем существование PHP-скрипта перед его передачей
try_files $fastcgi_script_name = 404;

# Обойти тот факт, что try_files сбрасывает $fastcgi_path_info
# см.: http://trac.nginx.org/nginx/ticket/321
установить $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;

fastcgi_index index.php;
включить fastcgi.conf;
Michael Hampton avatar
флаг cz
Проверьте журнал ошибок PHP. Убедитесь, что вы действительно регистрируете ошибки PHP и что ваш код генерирует соответствующие сообщения.
флаг gb
Проверил это уже. Это происходит в определенном файле. Хотя сообщение выглядит иначе, чем apache. Может ли это быть проблемой?
Michael Hampton avatar
флаг cz
Разве этот класс Sentry не регистрирует какие-либо ошибки или исключения?!
флаг gb
Где их найти? Где-нибудь еще? Ошибка, которую я опубликовал, - это все, что есть в журнале ошибок nginx.
Michael Hampton avatar
флаг cz
Посмотрите на его документацию.
флаг gb
класс часового должен войти в тот же файл, что и остальная часть приложения php... поэтому он не генерирует никаких исключений
Michael Hampton avatar
флаг cz
Однако вы регистрируете ошибки PHP. На этом этапе проблема будет связана с вашим кодом или со сторонней службой, с которой он общается. Вы должны сосредоточиться там. Вы можете получить помощь по отладке кода на [so].
флаг gb
Код отлично работает под apache. тот же код, тот же идентификатор часового, та же ошибка. В чем будет основная разница между apache и nginx в этом контексте?
флаг gb
Я пришел сюда, потому что отладка кода была моим первым и уже исчерпывающим этапом. Таким образом, проблема должна быть либо в nginx, либо в вызове sentry на nginx. Поскольку я не эксперт ни в nginx, ни в часовом, я думаю, что это правильный обмен стеками, верно? Михаил, ничего страшного, если вы не знаете решения. Может кто еще что подскажет...
mforsetti avatar
флаг tz
какая у тебя ОС? если вы используете CentOS, попробуйте журналы SELinux. у вас уже установлен `php-curl`? похоже, что `sentry/sdk` требует cURL для вызова своего HTTP API.
флаг gb
ОС — Debian 10, объявление curl: «php7.4-curl уже является самой новой версией (7.4.20-1+0~20210604.45+debian10~1.gbpfeee62)».
mforsetti avatar
флаг tz
попробуйте [отправить](https://docs.sentry.io/platforms/php/usage/) сообщение вручную или через `catch`. если сообщение отображается в Sentry, вы, вероятно, не установили [обработчик исключений] (https://www.php.net/manual/en/function.set-exception-handler.php) в своем скрипте на Sentry.
флаг gb
Как бы я это установил?
флаг gb
Я пробовал отправлять с помощью catch, ничего :/ но, может быть, я смогу это как-то отладить...
флаг sv
Можем ли мы получить содержимое `snippets/fastcgi-php.conf`?
флаг gb
@pothi: обновлено, что мне скажет этот файл? (Кстати, я не трогал конфигурацию после установки. Все должно быть по умолчанию)
mforsetti avatar
флаг tz
используйте `\Sentry\captureMessage('Что-то пошло не так');`. попробуйте проверить, не израсходовали ли вы всю свою квоту на события, и [попробуйте отключить защиту Spike](https://blog.sentry.io/2018/05/08/event-spike-protection#can-i-turn -шип-защита-выключено).
флаг gb
Нет-нет, пока что у меня есть только просмотр ошибок, сообщающих об этом инструменте, и хотя эта конкретная настройка приложения, кажется, ничего не сообщает, другие приложения на других серверах все еще сообщают, а также моя локальная репликация того же самого приложения, но на сервере apache , может сообщать об ошибках.
флаг gb
Я также отключил брандмауэр и проверил, может ли это быть проблемой - все еще нет ntifications.

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

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