Erros de conformidade
Estas entradas cobrem as duas exceções no namespace NextPDF\Compliance\Exception.
Ambas são geradas pelo subsistema de conformidade: o pipeline canônico de
clause-hash e o ciclo de vida de conformidade (o cache de Document Compliance
Evidence, o promoter de audited-to-terminal e o observer de cooldown).
Ambas as classes são final e estendem NextPdfException, que por sua vez estende
\RuntimeException e implementa ContextAwareExceptionInterface. Nenhuma das
subclasses sobrescreve getContext(), então ambas herdam a implementação base,
que retorna um array vazio. O detalhe de diagnóstico é carregado na mensagem da
exceção, não em getContext(). Capture qualquer um dos tipos como
NextPdfException, ou como \RuntimeException se você tiver handlers existentes.
Requisitos de runtime de clause-hash
Seção intitulada “Requisitos de runtime de clause-hash”ClauseHashRequirementException
Seção intitulada “ClauseHashRequirementException”- Quando é gerada. A partir de
ClauseHash::compute()quando o runtime PHP do host não tem um requisito rígido do pipeline canônico de clause-hash. Atualmente o único requisito desse tipo éext-intl, usado para Unicode Normalization Form KC (NFKC). O único site de throw gera a mensagemClauseHash requires ext-intl for NFKC normalisation. - Por que falha de forma fechada. O
composer.jsonexigeext-intl, então isto dispara apenas em um downstream mal configurado que empacota o NextPDF sem intl. O pipeline se recusa a calcular um digest não normalizado por NFKC em vez de emitir silenciosamente um hash incompatível com todos os outros consumidores de clause-hash. - Contexto.
getContext()retorna um array vazio. A causa é informada na mensagem. - Recuperação. Ação do operador: instale e ative a extensão PHP
intlno host, então tente novamente. Não há solução alternativa em código; o digest normalizado não pode ser produzido sem ela.
Falhas de ciclo de vida de conformidade
Seção intitulada “Falhas de ciclo de vida de conformidade”ComplianceLifecycleException
Seção intitulada “ComplianceLifecycleException”- Quando é gerada. A partir do subsistema de ciclo de vida de conformidade quando um
invariante estrutural em
claims.jsonou em seu pipeline de persistência é violado em tempo de execução. Os sites de throw abrangem o promoter de audited-to-terminal, o observer de cooldown e o cache incremental de Document Compliance Evidence. Os gatilhos concretos são:- Documento raiz malformado —
claims.jsonnão decodifica para um objeto, ouclaims.standardsnão é um objeto JSON (por exemplo,claims.json must decode to an object,claims.standards must be a JSON object,claims.json invalid JSON: <detail>). - Falhas de leitura —
claims.jsonestá ausente ou ilegível (por exemplo,claims.json not found at: <path>,claims.json unreadable at <path>). - Falhas de I/O de gravação atômica no pipeline de persistência — abertura de temp,
flock, gravação curta,fflush,renameatômico e gravação de sidecar (por exemplo,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>). - Falhas do lado do encoder —
json_encode()rejeita o payload de saída (por exemplo,claims.json encode failed: <detail>). - Falhas de bootstrap do cache de evidências — o cache incremental não consegue criar
ou gravar seu diretório raiz (por exemplo,
IncrementalEvidenceCache: cannot create rootDir <path>,IncrementalEvidenceCache: write failed for <path>,IncrementalEvidenceCache: rename failed for <path>). - Violações de invariante interno — por exemplo um
gmdate produced empty timestampoufqClauseId: empty clauseKey.
- Documento raiz malformado —
- Por que existe. Esta é uma substituição tipada de domínio para o uso anterior de
\RuntimeExceptionno código de ciclo de vida e de cache. Ela não muda o contrato de runtime, porqueNextPdfExceptionjá estende\RuntimeException; cláusulascatch (\RuntimeException $e)existentes continuam funcionando. - Contexto.
getContext()retorna um array vazio. O caminho problemático e a falha específica são informados na mensagem; falhas de decode e encode JSON também encadeiam a\JsonExceptionsubjacente como a exceção anterior, então leiagetPrevious()para essas. - Recuperação.
- Para erros de formato e de leitura, esta é uma ação do operador: inspecione
claims.jsonno caminho informado na mensagem, confirme que é JSON bem formado cuja raiz e cujo membrostandardssão objetos, e confirme que está presente e legível. - Para erros de gravação atômica e de bootstrap de cache, verifique a existência, as permissões e o espaço livre do diretório de destino, então tente novamente.
- Para falhas do lado do encoder, esta é uma ação do desenvolvedor: o payload entregue a
json_encode()não é codificável. Capture a exceção anterior encadeada e a mensagem para um relatório de defeito.
- Para erros de formato e de leitura, esta é uma ação do operador: inspecione