Ahh....... an epiphony🙂 Couple problems with your script:
ImageTTFText() requires a valid path (absolute or relative) to the font file. Thus, assuming that your font is in the same directory as the script, "CAELDERA.TTF" should read "./CAELDERA.TTF". Also remember that *Nix filenames are case sensitive and you must ensure that the filename and extension on the server are all uppercase (in this case).
You're missing an argument for the ImageTTFText() method. The method requires 8 arguments:
ImageTTFText (int im, int size, int angle, int x, int y, int col, string fontfile, string text)
You only have 7 (you forgot int angle). The following modication of your code should work:
Header("Content-type: image/png");
$im = ImageCreateFromPNG("banner.png");
$black = ImageColorAllocate ($im, 0x00, 0x00, 0x00);
$white = ImageColorAllocate ($im, 0xFF, 0xFF, 0xFF);
ImageTTFText ($im, $size, 0, $x, $y, $white, "./CAELDERA.TTF", $charname);
ImagePNG($im);
ImageDestroy($im);
HTH.
geoff