أخطاء المطابقة
النطاق
قسم بعنوان «النطاق»تغطي هذه المداخل الاستثناءين الواقعين في فضاء الأسماء NextPDF\Compliance\Exception. ويُطلق كليهما النظام الفرعي للمطابقة: خط أنابيب تجزئة البنود المعياري، ودورة حياة المطابقة (مخزن أدلة مطابقة المستند، والمُرقِّي من المُدقَّق إلى النهائي، ومُراقب فترة التهدئة).
كلتا الفئتين final وتمدّدان NextPdfException، التي تمدّد بدورها \RuntimeException وتطبّق ContextAwareExceptionInterface. ولا تتجاوز أيٌّ من الفئتين الفرعيتين getContext()، لذا ترث كلتاهما التطبيق الأساسي الذي يُرجع مصفوفة فارغة. تُحمَل التفاصيل التشخيصية في رسالة الاستثناء، لا في getContext(). اعترض أيًّا من النوعين بوصفه NextPdfException، أو بوصفه \RuntimeException إن كانت لديك مُعالِجات قائمة.
متطلبات وقت تشغيل تجزئة البنود
قسم بعنوان «متطلبات وقت تشغيل تجزئة البنود»ClauseHashRequirementException
قسم بعنوان «ClauseHashRequirementException»- متى يُطلَق. من
ClauseHash::compute()عندما يفتقد وقت تشغيل PHP المضيف متطلبًا صارمًا من خط أنابيب تجزئة البنود المعياري. المتطلب الوحيد من هذا النوع حاليًا هوext-intl، المُستخدَم لتطبيع صيغة التطبيع Unicode KC (NFKC). يُطلق موضع الإطلاق الوحيد الرسالةClauseHash requires ext-intl for NFKC normalisation. - لماذا يُخفق بأمان. يُلزِم
composer.jsonبـext-intl، لذا لا يُطلَق هذا إلا في بيئة لاحقة سيئة الإعداد تحزّم NextPDF من دون intl. يرفض خط الأنابيب حساب موجَز غير مُطبَّع وفق NFKC بدلًا من أن يُصدر بصمت تجزئةً غير متوافقة مع كل مستهلك آخر لتجزئة البنود. - السياق. يُرجع
getContext()مصفوفة فارغة. السبب مذكور في الرسالة. - التعافي. إجراء المُشغِّل: ثبّت امتداد PHP المسمى
intlوفعّله على المضيف، ثم أعد المحاولة. لا يوجد حلٌّ بديل داخل الشفرة؛ فالموجَز المُطبَّع لا يمكن إنتاجه من دونه.
إخفاقات دورة حياة المطابقة
قسم بعنوان «إخفاقات دورة حياة المطابقة»ComplianceLifecycleException
قسم بعنوان «ComplianceLifecycleException»- متى يُطلَق. من النظام الفرعي لدورة حياة المطابقة عند انتهاك ثابت بنيوي على
claims.jsonأو على خط أنابيب استمراره في وقت التشغيل. وتمتد مواضع الإطلاق إلى المُرقِّي من المُدقَّق إلى النهائي، ومُراقب فترة التهدئة، والمخزن التزايدي لأدلة مطابقة المستند. والمُطلِقات الفعلية هي:- مستند جذر مُشوَّه — لا يُفكّ ترميز
claims.jsonإلى كائن، أو ليسclaims.standardsكائن JSON (على سبيل المثالclaims.json must decode to an object، وclaims.standards must be a JSON object، وclaims.json invalid JSON: <detail>). - إخفاقات القراءة —
claims.jsonمفقود أو غير قابل للقراءة (على سبيل المثالclaims.json not found at: <path>، وclaims.json unreadable at <path>). - إخفاقات الإدخال/الإخراج للكتابة الذرية في خط أنابيب الاستمرار — فتح الملف المؤقت، و
flock، والكتابة القصيرة، وfflush، وإعادة التسمية الذريةrename، وكتابة العربة الجانبية (على سبيل المثال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>). - إخفاقات جانب المُرمِّز — يرفض
json_encode()الحمولة الصادرة (على سبيل المثالclaims.json encode failed: <detail>). - إخفاقات تهيئة مخزن الأدلة — يتعذّر على المخزن التزايدي إنشاء دليله الجذر أو الكتابة إليه (على سبيل المثال
IncrementalEvidenceCache: cannot create rootDir <path>، وIncrementalEvidenceCache: write failed for <path>، وIncrementalEvidenceCache: rename failed for <path>). - انتهاكات ثابت داخلي — على سبيل المثال
gmdate produced empty timestampأوfqClauseId: empty clauseKey.
- مستند جذر مُشوَّه — لا يُفكّ ترميز
- لماذا توجد. هذا بديل ذو نوع للمجال يحلّ محل الاستخدام السابق لـ
\RuntimeExceptionفي شفرة دورة الحياة والمخزن. وهو لا يغيّر عقد وقت التشغيل، لأنNextPdfExceptionتمدّد\RuntimeExceptionأصلًا؛ فتبقى عباراتcatch (\RuntimeException $e)القائمة تعمل. - السياق. يُرجع
getContext()مصفوفة فارغة. المسار المُخالف والإخفاق المحدد مذكوران في الرسالة؛ كما تُسلسِل إخفاقات فكّ ترميز JSON وترميزه الاستثناء الأساسي\JsonExceptionبوصفه الاستثناء السابق، فاقرأgetPrevious()لها. - التعافي.
- بالنسبة إلى أخطاء الشكل والقراءة، هذا إجراء مُشغِّل: افحص
claims.jsonفي المسار المذكور في الرسالة، وتأكّد من أنه JSON سليم الشكل جذره وعضوstandardsفيه كائنان، وتأكّد من وجوده وقابليته للقراءة. - بالنسبة إلى أخطاء الكتابة الذرية وتهيئة المخزن، تحقّق من وجود الدليل الهدف وأذوناته ومساحته الخالية، ثم أعد المحاولة.
- بالنسبة إلى إخفاقات جانب المُرمِّز، هذا إجراء مطوِّر: الحمولة المُسلَّمة إلى
json_encode()غير قابلة للترميز. التقط الاستثناء السابق المُتسلسل والرسالة لإعداد تقرير عيب.
- بالنسبة إلى أخطاء الشكل والقراءة، هذا إجراء مُشغِّل: افحص