Please note that as imageTTFBbox and imageTTFText functions return an array of coordinates which could be negative numbers care must be taken with height and width calculations.
The rigth way to do that is to use the abs() function:
for an horizontal text:
$box = @imageTTFBbox($size,0,$font,$text);
$width = abs($box[4] - $box[0]);
$height = abs($box[5] - $box[1]);
Then to center your text at ($x,$y) position the code should be like that:
$x -= $width/2;
$y += $heigth/2;
imageTTFText($img,$size,0,$x,$y,$color,$font,$text);
this because (0,0) page origin is topleft page corner and (0,0) text origin is lower-left readable text corner.
Hope this help.