NextPDF Gotenberg sorun giderme rehberi
Bir bakışta
“Bir bakışta” başlıklı bölümKöprü, hataları açıkça ve erkenden bildirir. Her hata, nedenini belirten bir mesajla birlikte türü belirli bir istisna fırlatır. Bu sayfayı bir katalog olarak kullanın. Her hata için istisna türünü, karşılaşacağınız mesaj parçasını, kod yolundaki kesin tetikleyiciyi ve düzeltmeyi bulursunuz.
İstisna aileleri şunlardır:
GotenbergConvertException— dönüştürme katmanı hatası (yapılandırma, taşıma veya yanıt).RuntimeException— güvenlik politikası tarafından herhangi bir ağ trafiği başlamadan önce fırlatılan bir doğrulama katmanı hatası.ValueError— tanınmayan bir dosya uzantısı.InvalidSpkiPinException— hatalı biçimlendirilmiş bir Transport Layer Security (TLS) SubjectPublicKeyInfo (SPKI) sabitleme dizesi.
Yapılandırma hataları
“Yapılandırma hataları” başlıklı bölüm”Invalid Gotenberg configuration: apiUrl is empty”
“”Invalid Gotenberg configuration: apiUrl is empty”” başlıklı bölüm- Tür:
GotenbergConvertException - Tetikleyici:
convertFile()veyaconvertString()çağrısını,GotenbergConfig::isValid()false iken yaptınız. Bu durum,apiUrlboş bir dize olduğunda gerçekleşir. - Düzeltme: Boş olmayan bir HTTPS URL’si sağlayın. Yapılandırmayı
fromArray()ile oluşturuyorsanız, sessizce''değerinin, eksik veya dize olmayan birapi_urlyerine kullanıldığını unutmayın. Yapılandırma kaynağınızı önyükleme sırasında doğrulayın.
URL ve adres (SSRF) hataları
“URL ve adres (SSRF) hataları” başlıklı bölümBu hatalar, sunucu tarafı istek sahteciliğine (SSRF) karşı koruma sağlayan güvenlik politikasından gelir. Köprü, bunları herhangi bir istek göndermeden önce fırlatır. Her biri düz bir RuntimeException hatasıdır.
”Gotenberg API URL must use HTTPS (got: http)”
“”Gotenberg API URL must use HTTPS (got: http)”” başlıklı bölüm- Tetikleyici: Yapılandırılan URL şeması
httpsdeğil. Denetim büyük/küçük harfe duyarsızdır, bu nedenleHTTPS://kabul edilir. - Düzeltme: Gotenberg’i TLS arkasına yerleştirin ve HTTPS uç noktasını yapılandırın. Yerel geliştirme için bile düz HTTP reddedilir.
”Invalid Gotenberg API URL: unable to parse”
“”Invalid Gotenberg API URL: unable to parse”” başlıklı bölüm- Tetikleyici: URL, şema ve ana bilgisayar olarak ayrıştırılamıyor.
- Düzeltme: Söz dizimsel olarak geçerli, mutlak bir URL sağlayın; örneğin
https://gotenberg.example.com:3000.
”Gotenberg API URL must not resolve to a private or reserved IP address” (ana bilgisayar özel veya ayrılmış bir adrese çözümleniyor)
“”Gotenberg API URL must not resolve to a private or reserved IP address” (ana bilgisayar özel veya ayrılmış bir adrese çözümleniyor)” başlıklı bölüm- Tetikleyici: Ana bilgisayar, özel veya ayrılmış bir İnternet Protokolü (IP) sabit değeri ya da (tüm A/AAAA kayıtları üzerinden) herhangi bir özel veya ayrılmış adrese çözümlenen bir ana bilgisayar adıdır. Bu, Request for Comments (RFC) 1918 özel aralıklarını, geri döngü (loopback) ve bağlantı yerel (link-local) adresleri engeller.
- Düzeltme: Köprüyü yönlendirilebilir bir genel adrese veya düzgün şekilde bölümlenmiş bir hizmet adresine yönlendirin. Gotenberg örneğiniz bilinçli olarak özel bir ağdaysa, köprünün SSRF koruması bunu tasarım gereği reddeder. Gotenberg’i, korumanın kabul ettiği bir adres üzerinden açığa çıkarın, ardından bu yolu ağ denetimleri ve kimlik doğrulamasıyla koruyun. /integrations/gotenberg/security-and-operations/. sayfasına bakın.
”Gotenberg API URL DNS answer changed since validation — possible DNS rebinding attack”
“”Gotenberg API URL DNS answer changed since validation — possible DNS rebinding attack”” başlıklı bölüm- Tetikleyici: İlk doğrulama ile istek arasında, yeni bir Etki Alanı Adı Sistemi (DNS) çözümlemesi başlangıçta doğrulanan kümede bulunmayan bir adres döndürdü.
- Düzeltme: Bu, time-of-check/time-of-use korumasının devreye girmesidir. Ana bilgisayarın DNS’ini araştırın. Geçerli bir neden, adresleri dönüşümlü veren bir yük dengeleyici olabilir. Kötü amaçlı bir neden ise yeniden bağlama (rebinding) saldırısıdır. Gotenberg uç noktası için kararlı bir adres ya da kararlı bir kayıt kümesine sahip bir ad kullanın.
Girdi doğrulama hataları
“Girdi doğrulama hataları” başlıklı bölümGüvenlik politikası bu hataları istek gönderilmeden önce fırlatır. Aksi belirtilmedikçe her biri düz bir RuntimeException hatasıdır.
”File not found or not readable: ” (dosya bulunamadı ya da okunabilir bir dosya değil)
“”File not found or not readable: ” (dosya bulunamadı ya da okunabilir bir dosya değil)” başlıklı bölüm- Tür:
GotenbergConvertException - Tetikleyici:
convertFile()yolu standart biçime getiremedi ya da çözümlenen yol normal, okunabilir bir dosya değil. Bir dizin de bunu tetikler. - Düzeltme: Var olan ve okunabilir bir dosyaya giden yol geçirin. Yol önce
realpath()ile standart biçime getirilir; bu, dizin geçişini (traversal) de engeller.
”File size ( bytes) exceeds maximum allowed size ( bytes)”
“”File size ( bytes) exceeds maximum allowed size ( bytes)”” başlıklı bölüm- Tetikleyici: Girdi,
maxFileSizedeğerinden büyük (varsayılan 52,428,800 bayt = 50 MiB). - Düzeltme: Belge gerçekten gerektiriyorsa
maxFileSizedeğerini yükseltin ya da yüklemeyi üst katmanda reddedin. Sınırı, gerçek belgelerinizin izin verdiği ölçüde düşük tutun. Bu, köprünün tek yerleşik kaynak sınırıdır.
Dosya adı reddetmeleri
“Dosya adı reddetmeleri” başlıklı bölümKöprü, dosya adını doğrular. Dosya dönüştürmelerinde dosya adı, çözümlenen yolun temel adıdır; convertString() için ise geçirdiğiniz addır. Bunların her biri bir RuntimeException hatasıdır:
| Mesaj parçası | Tetikleyici |
|---|---|
must not be empty | boş dosya adı |
path traversal sequences (..) | ad şunu içeriyor: .. |
forward slashes | ad şunu içeriyor: / |
backslashes | ad şunu içeriyor: \ |
null bytes | ad bir NUL baytı içeriyor |
control characters | ad bir ASCII denetim karakteri (0–31) içeriyor |
- Düzeltme: Temiz bir temel ad geçirin.
convertString()içinreport.docxgibi düz bir ad verin. Bu ad, biçim algılama ve çok parçalı yüklemede dosya adı olarak kullanılır; yol olarak kullanılmaz.
”Unknown office format extension: ”
“”Unknown office format extension: ”” başlıklı bölüm- Tür:
ValueError - Tetikleyici: Dosya uzantısı şunlardan biri değil:
docx,xlsx,pptx,odt,ods,odp(büyük/küçük harfe duyarsız, başındaki noktaya izin verilir). - Düzeltme: Yalnızca tanınan altı biçimi dönüştürün. Köprü, eski ikili biçimleri (
.doc,.xls,.ppt),.rtf,.csv, düz metni veya görüntüleri tanımaz. Bu girdileri, köprüyü çağırmadan önce tanınan bir biçime dönüştürün ya da farklı bir yol üzerinden yönlendirin.
Taşıma ve yanıt hataları
“Taşıma ve yanıt hataları” başlıklı bölümBunların hepsi GotenbergConvertException hatalarıdır.
”Gotenberg HTTP request failed: ”
“”Gotenberg HTTP request failed: ”” başlıklı bölüm- Tetikleyici: PHP Standard Recommendation 18 (PSR-18) istemcisi (veya cURL ile sabitlenmiş taşıma) isteği gönderirken bir istisna fırlattı. Nedeni bağlantı reddi, zaman aşımı, TLS el sıkışma hatası ya da sabitleme uyuşmazlığı olabilir.
- İstisna kodu: temel istemci istisnasının kodu.
- Neden: özgün PSR-18 istemci istisnası, önceki istisna olarak eklenir.
- Düzeltme: Şu dört noktayı denetleyin. Hizmetin erişilebilirliğini
isAvailable()ile denetleyin. Ağ yolunu denetleyin. TLS zincirini denetleyin. Sabitleme yapılandırılmışsa, sunucunun geçerli SubjectPublicKeyInfo (SPKI) değerinin, yapılandırılmış bir sabitlemeyle eşleştiğini denetleyin. Bir sertifika döndürmesinden sonra oluşan sabitleme uyuşmazlığı, klasik nedendir. Döndürme yordamı için /integrations/gotenberg/security-and-operations/. sayfasına bakın.
”cURL transport error (): ”
“”cURL transport error (): ”” başlıklı bölüm- Tetikleyici: cURL ile sabitlenmiş taşımanın
curl_execçağrısı, sıfır olmayan bir cURL hata numarasıyla başarısız oldu ya da dize olmayan bir gövde döndürdü. - Düzeltme: cURL hata numarası nedeni gösterir (TLS, çözümleme, zaman aşımı, sabitleme). Sabitleme hatası,
CURLOPT_PINNEDPUBLICKEYsertifikayı reddettiğinde burada ortaya çıkar. Yapılandırılmış sabitlemelerin ve çözümlenen adresin güncel olduğunu doğrulayın.
”Gotenberg conversion failed with HTTP : ”
“”Gotenberg conversion failed with HTTP : ”” başlıklı bölüm- Tetikleyici: Yanıt durumu
200değildi. Gövde dahil edilir, ilk 500 karaktere kesilir ve daha uzunsa sonuna üç nokta eklenir. - Düzeltme: Dahil edilen gövdeyi okuyun. Gotenberg’in hata mesajı, dönüştürmenin neden reddedildiğini açıklar: desteklenmeyen belge içeriği, dahili bir LibreOffice hatası ya da
401veya403durumunda kimlik doğrulama reddi. Bir401/403,apiKeydeğerinin eksik veya yanlış olduğu anlamına gelir. Bir5xx, hizmet taraflı bir hatadır ve sınırlı bir yeniden deneme için adaydır.
”Unexpected Content-Type from Gotenberg: (expected application/pdf)”
“”Unexpected Content-Type from Gotenberg: (expected application/pdf)”” başlıklı bölüm- Tetikleyici: Durum
200idi, ancak yanıttakiContent-Typedeğeriapplication/pdfiçermiyordu. - Düzeltme: Bu genellikle bir vekil sunucu ya da ağ geçidinin, bir HTML hata veya yönlendirme sayfasını
200ile döndürdüğü anlamına gelir. Köprü, sabitlenmiş taşımada yönlendirme izlemeyi bilinçli olarak devre dışı bırakır; böylece bir3xxyanıtı, denetlenmemiş bir ana bilgisayara sessizce izlenmez. YanlışContent-Typeile gelen bir gövde, sizinle Gotenberg arasında bir şeyin araya girdiğini gösterir. Ağ yolunu inceleyin.
”Response body does not start with %PDF header — invalid PDF data” (yanıt gövdesi %PDF üst bilgisiyle başlamıyor — geçersiz PDF verisi)
“”Response body does not start with %PDF header — invalid PDF data” (yanıt gövdesi %PDF üst bilgisiyle başlamıyor — geçersiz PDF verisi)” başlıklı bölüm- Tetikleyici: Durum
200,Content-Typekabul edilebilir, ancak gövde%PDFimzasıyla başlamıyor. - Düzeltme: Üst katman, başlıklara rağmen Taşınabilir Belge Biçimi (PDF) dosyası olmayan bir şey döndürdü. Yanıtı güvenilmez olarak ele alın ve hizmeti araştırın. Gövdeyi diske yazmayın. Köprü, onu sonuç olarak döndürmeyi reddeder.
Sabitleme yapılandırma hataları
“Sabitleme yapılandırma hataları” başlıklı bölüm”Invalid SPKI pin format: (expected sha256/)”
“”Invalid SPKI pin format: (expected sha256/)”” başlıklı bölüm- Tür:
InvalidSpkiPinException - Tetikleyici: Yapılandırılmış bir sabitleme dizesi
sha256/veyasha256//ile başlamıyor. - Düzeltme: Her sabitlemeyi
sha256/<base64-encoded-spki-hash>olarak biçimlendirin. Taşıma, cURL’ye özgüsha256//<base64>biçimini de kabul eder. Değeri, tüm sertifikadan değil, sunucu sertifikasının SubjectPublicKeyInfo bölümünden üretin.
”Hizmet çalışıyor ama kullanılamaz diyor”
“”Hizmet çalışıyor ama kullanılamaz diyor”” başlıklı bölümisAvailable(), URL boş olduğunda, HTTPS olmadığında ya da private/reserved (özel/ayrılmış) bir adrese çözümlendiğinde herhangi bir ağ çağrısı yapmadan false döndürür. Ayrıca false değerini, herhangi bir ağ hatasında ya da /health 500 veya üzeri döndürdüğünde de döndürür; bu durumlarda hata fırlatmak yerine hatayı yakalar. Sırayla denetleyin:
- Yapılandırılan URL’nin boş olmadığını ve HTTPS olduğunu doğrulayın.
- Ana bilgisayarın private/reserved bir adrese çözümlenmediğini doğrulayın (SSRF koruması, sınama için bile bunu reddeder).
<apiUrl>/healthuç noktasının uygulama ana bilgisayarından erişilebilir olduğunu ve500altında bir durum döndürdüğünü doğrulayın.
Ayrıca bakın
“Ayrıca bakın” başlıklı bölüm- /integrations/gotenberg/configuration/ — tüm seçenekler ve taşıma seçim kuralları.
- /integrations/gotenberg/production-usage/ — yeniden deneme politikası ve hata işleme sözleşmesi.
- /integrations/gotenberg/security-and-operations/ — SSRF modeli ve sabitleme döndürmesi.
- /integrations/gotenberg/quickstart/ — bağlam içindeki ayrıntılı yakalama sırası.