İçeriğe geç
getnextpdf.com

Uygunluk hataları

Bu girişler, NextPDF\Compliance\Exception ad alanındaki iki istisnayı kapsar. Her ikisi de uygunluk alt sistemi tarafından fırlatılır: kanonik hüküm-karması işlem hattı ve uygunluk yaşam döngüsü (Belge Uygunluk Kanıtı önbelleği, denetlenenden-uçbirime yükselten ve soğuma gözlemcisi).

Her iki sınıf da final’dır ve kendisi \RuntimeException sınıfını genişleten ve ContextAwareExceptionInterface arayüzünü uygulayan NextPdfException sınıfını genişletir. Hiçbir alt sınıf getContext() yöntemini geçersiz kılmaz; bu nedenle her ikisi de boş bir dizi döndüren temel uygulamayı devralır. Tanılama ayrıntısı getContext() içinde değil, istisna iletisinde taşınır. Her iki türü de NextPdfException olarak ya da mevcut işleyicileriniz varsa \RuntimeException olarak yakalayın.

  • Ne zaman fırlatılır. ClauseHash::compute() içinden, ana bilgisayar PHP çalışma zamanında kanonik hüküm-karması işlem hattının zorunlu bir gereksinimi eksik olduğunda. Şu anda böyle tek gereksinim, Unicode Normalleştirme Biçimi KC (NFKC) normalleştirmesi için kullanılan ext-intl uzantısıdır. Tek fırlatma yeri, ClauseHash requires ext-intl for NFKC normalisation iletisini fırlatır.
  • Neden güvenli biçimde başarısız olur. composer.json, ext-intl zorunlu kılar; bu nedenle bu yalnızca NextPDF’i intl olmadan paketleyen, yanlış yapılandırılmış bir alt akışta tetiklenir. İşlem hattı, diğer her hüküm-karması tüketicisiyle uyumsuz bir karmayı sessizce yaymak yerine, NFKC-normalleştirilmemiş bir özet hesaplamayı reddeder.
  • Bağlam. getContext() boş bir dizi döndürür. Neden iletide belirtilir.
  • Çözüm. Operatör eylemi: ana bilgisayarda PHP intl uzantısını yükleyip etkinleştirin, sonra yeniden deneyin. Kod içi bir geçici çözüm yoktur; normalleştirilmiş özet, onsuz üretilemez.
  • Ne zaman fırlatılır. Uygunluk yaşam döngüsü alt sisteminden, claims.json üzerinde veya kalıcılık işlem hattında yapısal bir değişmez çalışma zamanında ihlal edildiğinde. Fırlatma yerleri, denetlenenden-uçbirime yükselteni, soğuma gözlemcisini ve Belge Uygunluk Kanıtı artımlı önbelleğini kapsar. Somut tetikleyiciler şunlardır:
    • Hatalı kök belgeclaims.json bir nesneye kod çözmüyor ya da claims.standards bir JSON nesnesi değil (örneğin, claims.json must decode to an object, claims.standards must be a JSON object, claims.json invalid JSON: <detail>).
    • Okuma hatalarıclaims.json eksik veya okunamaz (örneğin, claims.json not found at: <path>, claims.json unreadable at <path>).
    • Kalıcılık işlem hattındaki atomik-yazma G/Ç hataları — temp açma, flock, kısa yazma, fflush, atomik rename ve yan-dosya yazma (örneğin, 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>).
    • Kodlayıcı tarafı hatalarıjson_encode(), giden yükü reddeder (örneğin, claims.json encode failed: <detail>).
    • Kanıt-önbelleği önyükleme hataları — artımlı önbellek, kök dizinini oluşturamaz ya da yazamaz (örneğin, IncrementalEvidenceCache: cannot create rootDir <path>, IncrementalEvidenceCache: write failed for <path>, IncrementalEvidenceCache: rename failed for <path>).
    • Dahili değişmez ihlalleri — örneğin bir gmdate produced empty timestamp ya da fqClauseId: empty clauseKey.
  • Neden var. Bu, yaşam döngüsü ve önbellek kodunda \RuntimeException öğesinin önceki kullanımının etki alanı-türlü yerine geçenidir. NextPdfException zaten \RuntimeException sınıfını genişlettiğinden çalışma zamanı sözleşmesini değiştirmez; mevcut catch (\RuntimeException $e) yan tümceleri çalışmaya devam eder.
  • Bağlam. getContext() boş bir dizi döndürür. Hatalı yol ve belirli hata iletide adlandırılır; JSON-kod çözme ve kodlama hataları ayrıca temeldeki \JsonException öğesini önceki istisna olarak zincirler; bu nedenle bunlar için getPrevious() çıktısını okuyun.
  • Çözüm.
    • Biçim ve okuma hataları için bu bir operatör eylemidir: iletide adlandırılan yoldaki claims.json dosyasını inceleyin, kökü ve standards üyesi nesne olan iyi-biçimli bir JSON olduğunu doğrulayın ve mevcut ve okunabilir olduğunu doğrulayın.
    • Atomik-yazma ve önbellek-önyükleme hataları için hedef dizinin varlığını, izinlerini ve boş alanını denetleyin, sonra yeniden deneyin.
    • Kodlayıcı tarafı hatalar için bu bir geliştirici eylemidir: json_encode() yöntemine verilen yük kodlanabilir değil. Bir kusur raporu için zincirlenmiş önceki istisnayı ve iletiyi yakalayın.