Błędy zgodności
Te wpisy obejmują dwa wyjątki w przestrzeni nazw NextPDF\Compliance\Exception.
Oba są zgłaszane przez podsystem zgodności: kanoniczny
potok skrótu klauzuli oraz cykl życia zgodności (pamięć podręczna Document Compliance
Evidence, promotor z audited do terminal oraz obserwator schłodzenia).
Obie klasy są final i rozszerzają NextPdfException, który sam rozszerza
\RuntimeException i implementuje ContextAwareExceptionInterface. Żadna z
podklas nie nadpisuje getContext(), więc obie dziedziczą implementację bazową,
która zwraca pustą tablicę. Szczegóły diagnostyczne są niesione w komunikacie
wyjątku, a nie w getContext(). Przechwyć dowolny z tych typów jako
NextPdfException albo jako \RuntimeException, jeśli masz istniejące programy obsługi.
Wymagania skrótu klauzuli w środowisku wykonawczym
Dział zatytułowany „Wymagania skrótu klauzuli w środowisku wykonawczym”ClauseHashRequirementException
Dział zatytułowany „ClauseHashRequirementException”- Kiedy jest zgłaszany. Z
ClauseHash::compute(), gdy hostujące środowisko wykonawcze PHP nie spełnia twardego wymagania kanonicznego potoku skrótu klauzuli. Obecnie jedynym takim wymaganiem jestext-intl, używane do normalizacji Unicode Normalization Form KC (NFKC). Jedyne miejsce zgłoszenia generuje komunikatClauseHash requires ext-intl for NFKC normalisation. - Dlaczego działa w trybie fail-closed.
composer.jsonnakazujeext-intl, więc to zadziała tylko w błędnie skonfigurowanym środowisku downstream, które pakuje NextPDF bez intl. Potok odmawia obliczenia skrótu bez normalizacji NFKC, zamiast po cichu wyemitować skrót niezgodny z każdym innym konsumentem skrótu klauzuli. - Kontekst.
getContext()zwraca pustą tablicę. Przyczyna jest podana w komunikacie. - Naprawa. Działanie operatora: zainstaluj i włącz rozszerzenie PHP
intlna hoście, a następnie ponów. Nie istnieje obejście w kodzie; znormalizowanego skrótu nie da się wytworzyć bez niego.
Awarie cyklu życia zgodności
Dział zatytułowany „Awarie cyklu życia zgodności”ComplianceLifecycleException
Dział zatytułowany „ComplianceLifecycleException”- Kiedy jest zgłaszany. Z podsystemu cyklu życia zgodności, gdy w czasie wykonania zostanie naruszony
niezmiennik strukturalny
claims.jsonlub jego potoku utrwalania. Miejsca zgłoszenia obejmują promotor z audited do terminal, obserwator schłodzenia oraz przyrostową pamięć podręczną Document Compliance Evidence. Konkretne wyzwalacze to:- Źle sformowany dokument główny —
claims.jsonnie dekoduje się do obiektu alboclaims.standardsnie jest obiektem JSON (na przykładclaims.json must decode to an object,claims.standards must be a JSON object,claims.json invalid JSON: <detail>). - Awarie odczytu —
claims.jsonjest brakujący lub nieczytelny (na przykładclaims.json not found at: <path>,claims.json unreadable at <path>). - Awarie wejścia/wyjścia zapisu atomowego w potoku utrwalania — otwarcie pliku temp,
flock, krótki zapis,fflush, atomowyrenameoraz zapis sidecara (na przykładtmp open failed at <path>,tmp flock failed at <path>,tmp write short for <path>,tmp fflush failed at <path>,atomic rename failed for <path>,sha256 sidecar write failed at <path>). - Awarie po stronie kodera —
json_encode()odrzuca wychodzący ładunek (na przykładclaims.json encode failed: <detail>). - Awarie bootstrapu pamięci podręcznej dowodów — przyrostowa pamięć podręczna nie może utworzyć
ani zapisać swojego katalogu głównego (na przykład
IncrementalEvidenceCache: cannot create rootDir <path>,IncrementalEvidenceCache: write failed for <path>,IncrementalEvidenceCache: rename failed for <path>). - Naruszenia niezmienników wewnętrznych — na przykład
gmdate produced empty timestamplubfqClauseId: empty clauseKey.
- Źle sformowany dokument główny —
- Dlaczego istnieje. To zastępnik typu domenowego dla wcześniejszego użycia
\RuntimeExceptionw kodzie cyklu życia i pamięci podręcznej. Nie zmienia kontraktu środowiska wykonawczego, ponieważNextPdfExceptionjuż rozszerza\RuntimeException; istniejące klauzulecatch (\RuntimeException $e)nadal działają. - Kontekst.
getContext()zwraca pustą tablicę. Problematyczna ścieżka oraz konkretna awaria są podane w komunikacie; awarie dekodowania i kodowania JSON również wiążą bazowy\JsonExceptionjako poprzedni wyjątek, więc odczytajgetPrevious()dla tych przypadków. - Naprawa.
- W przypadku błędów kształtu i odczytu jest to działanie operatora: sprawdź
claims.jsonpod ścieżką podaną w komunikacie, potwierdź, że jest to poprawnie sformowany JSON, którego korzeń i elementstandardssą obiektami, oraz potwierdź, że jest obecny i czytelny. - W przypadku błędów zapisu atomowego i bootstrapu pamięci podręcznej sprawdź istnienie katalogu docelowego, uprawnienia i wolne miejsce, a następnie ponów.
- W przypadku awarii po stronie kodera jest to działanie programisty: ładunek przekazany do
json_encode()nie jest kodowalny. Przechwyć powiązany poprzedni wyjątek oraz komunikat do raportu o usterce.
- W przypadku błędów kształtu i odczytu jest to działanie operatora: sprawdź