Algunas veces Smarty (como cuando la usamos sobre sistemas Microsoft), a la hora de crear archivos compilados, da un error en la línea 44 de \libs\internals\core.write_file.php relacionado con la función unlink() de php.
Si vemos el código en ese archivo notamos que en esa línea tenemos lo siguiente:
@unlink($params['filename']);
Esta línea lo que hace es borrar un archivo pasado con la variable $params['filename'], pero no comprueba si éste existe antes de hacerlo y, a pesar de contar con el operador @ cuya finalidad es no imprimir posibles errores, imprime un warning cuando se da esta situación.
Si añadimos esa pequeña comprobación dejará de dar ese error ya que no borrará el archivo a menos que éste exista. Lo hacemos sustituyendo la línea de código anterior por esta otra:
if(file_exists($params['filename'])){ @unlink($params['filename']); }