Я бы сказал, что проблема здесь:
define('SECRET', "vJs;ly-W\XDkD_2'-M7S2/ZRRBobxt5");
// ^^-- escape character
Руководство по PHP говорит:
\x[0-9A-Fa-f]{1,2}
последовательность символов, соответствующая регулярному выражению, является символом в шестнадцатеричной записи
Между PHP 5.2 и 5.3, очевидно, это было изменено, чтобы также соответствовать \X[0-9A-Fa-f]{1,2}
(обратите внимание на заглавную букву X в начале). При работе в PHP 5.3 у вас (по незнанию?) Есть возврат каретки в вашей строке.
Либо а) замените обратную косую черту другим символом, либо б) используйте одинарные кавычки при определении SECRET, и обе версии вернут один и тот же хеш (пробовал в 5.2.1 и 5.3.2).