Devi impostare un header solo se non è presente alcun output (spazi bianchi dopo la chiusura di php, BOM unicode e funzioni che stampano o ritonano output
su schermo come ad esempio echo, var_dump, print etc. altrimenti ricevi l'errore Cannot modify header information - headers already sent.
Se il valore del terzo parametro di CURLOPT_POSTFIELDS è array avrai Content-Type: multipart/form-data comunque il nome è CURLFile prova anche inserendo il suo terzo parametro postname. Un'esempio qui https://www.php.net/manual/en/curlfile.construct.php e il relativo output di $_FILES.
Tuttavia con HTTP/2 l'errore per il Content-Length con Transfer-Encoding: chunked è qui contemplato e risolto da php 7.4.4 o successivo (almeno sembra).
https://bugs.php.net/bug.php?id=79013