Compliance-fouten
Reikwijdte
Sectie met titel “Reikwijdte”Deze vermeldingen behandelen de twee uitzonderingen in de namespace
NextPDF\Compliance\Exception. Beide worden opgeworpen door het compliance-subsysteem: de canonieke
clause-hash-pipeline en de compliance-levenscyclus (de Document Compliance
Evidence-cache, de audited-to-terminal-promoter, en de cooldown-observer).
Beide klassen zijn final en breiden NextPdfException uit, die zelf
\RuntimeException uitbreidt en ContextAwareExceptionInterface implementeert. Geen van beide
subklassen overschrijft getContext(), dus beide erven de basisimplementatie,
die een lege array teruggeeft. Het diagnostische detail wordt meegedragen in het uitzonderings-
bericht, niet in getContext(). Vang beide types op als
NextPdfException, of als \RuntimeException als je bestaande handlers hebt.
Clause-hash-runtimevereisten
Sectie met titel “Clause-hash-runtimevereisten”ClauseHashRequirementException
Sectie met titel “ClauseHashRequirementException”- Wanneer hij wordt opgeworpen. Vanuit
ClauseHash::compute()wanneer de host-PHP-runtime een harde vereiste van de canonieke clause-hash-pipeline mist. Momenteel is de enige zulke vereisteext-intl, gebruikt voor Unicode Normalization Form KC (NFKC)-normalisatie. De enkele throw-site werpt het berichtClauseHash requires ext-intl for NFKC normalisationop. - Waarom hij fail-closed gaat.
composer.jsonvereistext-intl, dus dit vuurt alleen af in een verkeerd geconfigureerde downstream die NextPDF zonder intl pakketteert. De pipeline weigert een niet-NFKC-genormaliseerde digest te berekenen in plaats van stilletjes een hash uit te voeren die incompatibel is met elke andere clause-hash-consumer. - Context.
getContext()geeft een lege array terug. De oorzaak wordt vermeld in het bericht. - Herstel. Operator-actie: installeer en schakel de PHP-
intl-extensie in op de host, en probeer dan opnieuw. Er is geen in-code-workaround; de genormaliseerde digest kan niet zonder worden geproduceerd.
Compliance-levenscyclusstoringen
Sectie met titel “Compliance-levenscyclusstoringen”ComplianceLifecycleException
Sectie met titel “ComplianceLifecycleException”- Wanneer hij wordt opgeworpen. Vanuit het compliance-levenscyclussubsysteem wanneer een
structurele invariant op
claims.jsonof zijn persistentie-pipeline tijdens runtime wordt overtreden. Throw-sites omspannen de audited-to-terminal-promoter, de cooldown- observer, en de Document Compliance Evidence incremental cache. De concrete triggers zijn:- Misvormd root-document —
claims.jsondecodeert niet naar een object, ofclaims.standardsis geen JSON-object (bijvoorbeeld,claims.json must decode to an object,claims.standards must be a JSON object,claims.json invalid JSON: <detail>). - Leesstoringen —
claims.jsonontbreekt of is onleesbaar (bijvoorbeeld,claims.json not found at: <path>,claims.json unreadable at <path>). - Atomic-write-I/O-storingen in de persistentie-pipeline — temp open,
flock, short write,fflush, atomicrename, en sidecar write (bijvoorbeeld,tmp 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>). - Encoder-zijde-storingen —
json_encode()wijst de uitgaande payload af (bijvoorbeeld,claims.json encode failed: <detail>). - Evidence-cache-bootstrap-storingen — de incremental cache kan zijn
root-directory niet aanmaken of beschrijven (bijvoorbeeld,
IncrementalEvidenceCache: cannot create rootDir <path>,IncrementalEvidenceCache: write failed for <path>,IncrementalEvidenceCache: rename failed for <path>). - Interne invariant-overtredingen — bijvoorbeeld een
gmdate produced empty timestampoffqClauseId: empty clauseKey.
- Misvormd root-document —
- Waarom hij bestaat. Dit is een domein-getypeerde vervanging voor het eerdere gebruik van
\RuntimeExceptionin de levenscyclus- en cache-code. Het verandert het runtime-contract niet, omdatNextPdfException\RuntimeExceptional uitbreidt; bestaandecatch (\RuntimeException $e)-clausules blijven werken. - Context.
getContext()geeft een lege array terug. Het overtredende pad en de specifieke storing worden genoemd in het bericht; JSON-decode- en encode-storingen ketenen ook de onderliggende\JsonExceptionals de vorige uitzondering, dus leesgetPrevious()voor die. - Herstel.
- Voor vorm- en leesfouten is dit een operator-actie: inspecteer
claims.jsonop het pad dat in het bericht wordt genoemd, bevestig dat het welgevormde JSON is waarvan de root en hetstandards-lid objecten zijn, en bevestig dat het aanwezig en leesbaar is. - Voor atomic-write- en cache-bootstrap-fouten, controleer het bestaan, de machtigingen en de vrije ruimte van de doeldirectory, en probeer dan opnieuw.
- Voor encoder-zijde-storingen is dit een ontwikkelaars-actie: de payload die aan
json_encode()wordt overhandigd is niet encodeerbaar. Leg de geketende vorige uitzondering en het bericht vast voor een defect-rapport.
- Voor vorm- en leesfouten is dit een operator-actie: inspecteer