From 8e7a114c2287499c0c0c4fb1c1ee18b10f79aec4 Mon Sep 17 00:00:00 2001 From: Serreau Jovann Date: Thu, 9 Apr 2026 07:48:03 +0200 Subject: [PATCH] fix: unlink fichiers temporaires apres flush dans webhook EFlex DocuSeal Le @unlink() etait appele avant $em->flush(), Vich essayait de lire un fichier deja supprime. Les fichiers temporaires sont maintenant supprimes apres le flush. Co-Authored-By: Claude Opus 4.6 (1M context) --- src/Controller/WebhookDocuSealController.php | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/Controller/WebhookDocuSealController.php b/src/Controller/WebhookDocuSealController.php index 37c6299..bea49c9 100644 --- a/src/Controller/WebhookDocuSealController.php +++ b/src/Controller/WebhookDocuSealController.php @@ -270,10 +270,14 @@ class WebhookDocuSealController extends AbstractController } // Telecharger le PDF signe et l'audit - $this->downloadEFlexSignedDocuments($data, $eflex, $projectDir); + $tmpFiles = $this->downloadEFlexSignedDocuments($data, $eflex, $projectDir); $eflex->setState(\App\Entity\EFlex::STATE_PENDING_SETUP); $em->flush(); + foreach ($tmpFiles as $f) { + @unlink($f); + } + // Preparer Stripe Customer $customer = $eflex->getCustomer(); if ('' !== $stripeSk) { @@ -363,8 +367,13 @@ class WebhookDocuSealController extends AbstractController * * @codeCoverageIgnore */ - private function downloadEFlexSignedDocuments(array $data, \App\Entity\EFlex $eflex, string $projectDir): void + /** + * @return list fichiers temporaires a supprimer apres flush + */ + private function downloadEFlexSignedDocuments(array $data, \App\Entity\EFlex $eflex, string $projectDir): array { + $tmpFiles = []; + $documents = $data['documents'] ?? []; $pdfUrl = $documents[0]['url'] ?? null; if (null !== $pdfUrl) { @@ -373,7 +382,7 @@ class WebhookDocuSealController extends AbstractController $tmpSigned = tempnam(sys_get_temp_dir(), 'eflex_signed_').'.pdf'; file_put_contents($tmpSigned, $content); $eflex->setPdfSignedFile(new \Symfony\Component\HttpFoundation\File\UploadedFile($tmpSigned, 'eflex-signe-'.$eflex->getReference().'.pdf', 'application/pdf', null, true)); - @unlink($tmpSigned); + $tmpFiles[] = $tmpSigned; } } @@ -384,9 +393,11 @@ class WebhookDocuSealController extends AbstractController $tmpAudit = tempnam(sys_get_temp_dir(), 'eflex_audit_').'.pdf'; file_put_contents($tmpAudit, $auditContent); $eflex->setPdfAuditFile(new \Symfony\Component\HttpFoundation\File\UploadedFile($tmpAudit, 'audit-'.$eflex->getReference().'.pdf', 'application/pdf', null, true)); - @unlink($tmpAudit); + $tmpFiles[] = $tmpAudit; } } + + return $tmpFiles; } /**