Bỏ qua để đến nội dung
getnextpdf.com

Lỗi tuân thủ

Các mục này bao quát hai ngoại lệ trong không gian tên NextPDF\Compliance\Exception. Cả hai đều được ném bởi hệ thống con tuân thủ: pipeline clause-hash chuẩn tắc và vòng đời tuân thủ (cache Document Compliance Evidence, bộ thăng cấp từ audited-sang-terminal, và bộ quan sát cooldown).

Cả hai lớp đều final và mở rộng NextPdfException, vốn tự nó mở rộng \RuntimeException và hiện thực ContextAwareExceptionInterface. Không lớp con nào ghi đè getContext(), nên cả hai kế thừa bản hiện thực cơ sở, vốn trả về một mảng rỗng. Chi tiết chẩn đoán được mang trong thông báo ngoại lệ, không phải trong getContext(). Hãy bắt một trong hai kiểu dưới dạng NextPdfException, hoặc dưới dạng \RuntimeException nếu bạn có các trình xử lý hiện có.

  • Khi nào nó được ném. Từ ClauseHash::compute() khi môi trường chạy PHP của host thiếu một yêu cầu cứng của pipeline clause-hash chuẩn tắc. Hiện yêu cầu duy nhất như vậy là ext-intl, dùng cho chuẩn hóa Unicode Normalization Form KC (NFKC). Vị trí throw duy nhất nêu ra thông báo ClauseHash requires ext-intl for NFKC normalisation.
  • Vì sao nó thất bại theo hướng đóng. composer.json bắt buộc ext-intl, nên cái này kích hoạt chỉ trong một downstream cấu hình sai vốn đóng gói NextPDF mà không có intl. Pipeline từ chối tính một digest không-được-NFKC-chuẩn-hóa thay vì âm thầm phát ra một hash không tương thích với mọi bên tiêu thụ clause-hash khác.
  • Context. getContext() trả về một mảng rỗng. Nguyên nhân được nêu trong thông báo.
  • Khôi phục. Hành động của người vận hành: cài đặt và bật tiện ích PHP intl trên host, rồi thử lại. Không có giải pháp thay thế trong mã; digest đã chuẩn hóa không thể được tạo ra nếu không có nó.
  • Khi nào nó được ném. Từ hệ thống con vòng đời tuân thủ khi một bất biến cấu trúc trên claims.json hoặc pipeline lưu trữ của nó bị vi phạm tại môi trường chạy. Các vị trí throw trải khắp bộ thăng cấp audited-sang-terminal, bộ quan sát cooldown, và cache tăng dần Document Compliance Evidence. Các trigger cụ thể là:
    • Tài liệu gốc hỏng khuônclaims.json không giải mã thành một đối tượng, hoặc claims.standards không phải một đối tượng JSON (ví dụ, claims.json must decode to an object, claims.standards must be a JSON object, claims.json invalid JSON: <detail>).
    • Lỗi đọcclaims.json thiếu hoặc không đọc được (ví dụ, claims.json not found at: <path>, claims.json unreadable at <path>).
    • Lỗi I/O ghi-nguyên-tử trong pipeline lưu trữ — temp open, flock, ghi ngắn, fflush, rename nguyên tử, và ghi sidecar (ví dụ, 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>).
    • Lỗi phía-bộ-mã-hóajson_encode() từ chối payload đi ra (ví dụ, claims.json encode failed: <detail>).
    • Lỗi bootstrap cache-bằng-chứng — cache tăng dần không thể tạo hoặc ghi thư mục gốc của nó (ví dụ, IncrementalEvidenceCache: cannot create rootDir <path>, IncrementalEvidenceCache: write failed for <path>, IncrementalEvidenceCache: rename failed for <path>).
    • Vi phạm bất biến nội bộ — ví dụ một gmdate produced empty timestamp hoặc fqClauseId: empty clauseKey.
  • Vì sao nó tồn tại. Đây là một thay thế có-kiểu-theo-lĩnh-vực cho việc dùng trước đây của \RuntimeException trong mã vòng đời và cache. Nó không thay đổi hợp đồng môi-trường-chạy, vì NextPdfException đã mở rộng \RuntimeException; các mệnh đề catch (\RuntimeException $e) hiện có vẫn hoạt động.
  • Context. getContext() trả về một mảng rỗng. Đường dẫn gây lỗi và lỗi cụ thể được nêu trong thông báo; các lỗi giải-mã và mã-hóa JSON cũng móc xích \JsonException nền làm ngoại lệ trước, nên hãy đọc getPrevious() cho những lỗi đó.
  • Khôi phục.
    • Với các lỗi hình dạng và đọc, đây là một hành động của người vận hành: kiểm tra claims.json tại đường dẫn được nêu trong thông báo, xác nhận nó là JSON hợp khuôn có gốc và thành viên standards là các đối tượng, và xác nhận nó hiện diện và đọc được.
    • Với các lỗi ghi-nguyên-tử và bootstrap-cache, kiểm tra sự tồn tại, quyền, và dung lượng trống của thư mục đích, rồi thử lại.
    • Với các lỗi phía-bộ-mã-hóa, đây là một hành động của nhà phát triển: payload được trao cho json_encode() không mã hóa được. Ghi lại ngoại lệ trước trong chuỗi và thông báo cho một báo cáo lỗi.