Ciao. Questo è il mio script per il tuo problema. Restituisce la data finale data quella di partenza e il numero di giorni lavorativi. Tiene conto delle festività. Ho fatto un pò di prove e mi sembra funzioni correttamente.
Sicuramente si può scrivere meglio quindi sono ben accetti consigli.

Codice PHP:
<?php
// Calcolo del giorno di Pasqua fino all'ultimo anno valido
for ($i=2006$i<=2037$i++)
{
$pasqua date("Y-m-d"easter_date($i));
$array_pasqua[] = $pasqua;
}
//var_dump($array_pasqua);

// Calcolo le rispettive pasquette
foreach($array_pasqua as $pasqua)
{
list (
$anno,$mese,$giorno) = explode("-",$pasqua);
$pasquetta mktime (0,0,0,date($mese),date($giorno)+1,date($anno));
$array_pasquetta[] = $pasquetta;
}

// Data da cui calcolare i giorni lavorativi
$giorno 8;
$mese 12;
$anno 2006;

// Numero giorni lavorativi
$lavorativi 15

// Mi calcolo il timestamp della mia data di partenza
$tsData mktime(0,0,0,$mese,$giorno,$anno);

// questi giorni son sempre festivi a prescindere dall'anno
$giorniFestivi = array("01-01",
                       
"01-06",
                       
"04-25",
                       
"05-01",
"06-02",
                       
"08-15",
                       
"11-01",
                       
"12-08",
                       
"12-25",
                       
"12-26",
                       );

$i 0;
while (
$i<$lavorativi)
{
  
$giorno_data date("w",$tsData); //verifico il giorno: da 0 (dom) a 6 (sab)
  
$mese_giorno date('m-d',$tsData); // confronto con gg sempre festivi
// Infine verifico che il giorno non sia sabato,domenica,festivo fisso o festivo variabile (pasquetta);        
  
if ($giorno_data !=&& $giorno_data != && !in_array($mese_giorno,$giorniFestivi) && !in_array($tsData,$array_pasquetta) )
  {
    
$i++;
  }
$tsData=$tsData+86400;
}
$tsData=$tsData-86400;
$giorno_conclusivo date('d-m-Y',$tsData);
echo 
$giorno_conclusivo;
?>